我正在尝试使用find exec 的+选项而不是 xargs。但是,我似乎无法让它发挥作用。我觉得我一定在这里遗漏了一些明显的东西。
例子:
find . -name "*.java" -exec grep "@author" {} + \;
find: paths must precede expression
Usage: find [-H] [-L] [-P] [path...] [expression]
Run Code Online (Sandbox Code Playgroud)
另一方面,这有效:
find . -name "*.java" -exec grep "@author" {} \;
Run Code Online (Sandbox Code Playgroud)
就像这样:
find . -name "*.java" | xargs grep "@author"
Run Code Online (Sandbox Code Playgroud) 我使用 bash shell,有时突然,我的Backspace钥匙停止工作(当这种情况发生时Ctrl+Backspace仍然工作正常)
我不确定为什么会发生这种情况,但它也会延续到我从 shell 使用的任何 vim 会话。令我惊讶的是,获得一个新的外壳并没有帮助,而且问题似乎像开始时一样突然消失。
这就是键入的字符的样子,每次按键都会在外壳Backspace上显示为^?
$ cat filem^?namr^?e
Run Code Online (Sandbox Code Playgroud)
有人知道可能会发生什么吗?我怎样才能恢复正常行为?
我想添加一个别名(为了方便起见),它允许我编辑我的 bashrc,如果进行了更改,请提供它,但如果没有进行任何更改,请不要提供(以防我改变主意)。
我最初尝试过,alias vb='vi ~/.bashrc && source ~/.bashrc'但后来我意识到即使只是退出 vi:q或者:q!可能仍然返回成功返回值,这就是它仍然来源的原因。
是否有某种方法可以创建别名,以便在不更改文件的情况下退出 vi 不会产生 .bashrc 来源,但如果某些内容发生了变化,它确实如此?
在我的 Linux 4.15 机器上,我发现这个yes命令看起来完全没用——它输出一个作为参数传递的字符串(默认'y':),直到被杀死。而且……就是这样。
name@machine:~$ yes
y
y
[...]
y
y
^C
Run Code Online (Sandbox Code Playgroud)
我很难找出可能的用例,特别是考虑到 simplewhile true; do echo y; done具有类似的行为并且更具可读性(但我也找不到任何用例)。
这个命令可以用来做什么?它来自哪里?手册页和完整文档都没有回答这些问题!
我在Ask Ubuntu上发现我可以使用这个命令来找出我所在的 shell。
echo $0
Run Code Online (Sandbox Code Playgroud)
我喜欢这个,因为与Unix 和 Linux Stack Exchange上的更复杂的解决方案相比,它很简单。
我想echo类似于打印,但什么是$0?
最终,我希望能够以编程方式打开多个选项卡,类似于在Stack Overlow上看到的。
那使用gnome-terminal但我正在使用 Bash。
是否可以在 shell glob 扩展中添加“前缀”?我的用例如下,我有一个程序需要重复选项标志以将多个文件作为输入传递:
$ ls
foo.txt bar.txt baz.txt
$ ./some-script.sh -a foo.txt -a bar.txt -a baz.txt
Run Code Online (Sandbox Code Playgroud)
我希望能够使用某种扩展来添加'-a '到*txt. 那可能吗?用 zsh?砸?
cp对多个子目录中的文件名执行 a并foo-为其添加前缀会导致错误:
$ find my-dir -path "*/*" -execdir sh -c 'cp {} foo-{}' \;
cannot create regular file ‘foo-./blabla.jpg’: No such file or directory
Run Code Online (Sandbox Code Playgroud)
在 macOS 上,我没有得到这个./前缀,而且命令工作正常。
有没有办法cp不带./前缀的文件名?
知道为什么echo在这两种情况下都执行语句吗?
输出it worked:
#!/bin/bash
rizwan=''
if [ -n $rizwan ]; then
echo "it worked"
fi
Run Code Online (Sandbox Code Playgroud)
替换-n为-z, 并it worked在不期望输出时输出:
#!/bin/bash
rizwan=''
if [ -z $rizwan ]; then
echo "it worked"
fi
Run Code Online (Sandbox Code Playgroud) 我有一个包含大约 1900 万个文件的 tar 文件(没有文件夹)
0000107b869682826003b04a40e6394.txt
00029237482s8923789423ud8923892.txt
2c002y8378723887292377a79237649.txt
f598238209237408238742308374038.txt
Run Code Online (Sandbox Code Playgroud)
我如何解压所有文件,使它们出现在以文件的前四个字符命名的子目录中。因此,对于上面的例子中,它会创建0000,2c02以及f599目录和每个将具有以下文件。
0000\0000107b869682826003b04a40e6394.txt
0002\00029237482s8923789423ud8923892.txt
2c02\2c002y8378723887292377a79237649.txt
f598\f598238209237408238742308374038.txt
Run Code Online (Sandbox Code Playgroud)
我已经尝试创建一个脚本来遍历 tar 文件中的文件,创建一个目录并从 tar 中提取该文件并将其放入目录中。这适用于少量文件,但是当 tar 有数百万个时,提取需要很长时间。