Tag: xargs

使用xargs并行运行程序

我目前有当前的脚本。 #!/bin/bash # script.sh for i in {0..99}; do script-to-run.sh input/ output/ $i done 我希望使用xargs并行运行它。 我努力了 script.sh | xargs -P8 但是这样做只能在当时执行一次。 没有运气与-n8以及。 在循环的脚本中添加&要在脚本中执行的行将尝试一次运行脚本99次。 我该如何执行循环只有8时,总共达100。

如何在Linux中删除多个0字节的文件?

我有一个包含许多0字节文件的目录。 当我使用ls命令时甚至无法看到这些文件。 我正在使用一个小脚本删除这些文件,但有时甚至不删除这些文件。 这是脚本: i=100 while [ $i -le 999 ];do rm -f file${i}*; let i++; done 有没有其他办法可以更快地做到这一点?

没有Git元数据的Tarballing

我的源代码树包含了几个使用Git源代码控制的目录,我需要压缩整个树,不包括任何对Git元数据或自定义日志文件的引用。 我以为我会去使用find / egrep / xargs / tar的组合,但不知何故tar文件包含.git目录和* .log文件。 这是我的: find -type f . | egrep -v '\.git|\.log' | xargs tar rvf ~/app.tar 有人能解释我在这里的误解吗? 为什么tar处理find和egrep正在过滤的文件? 我也接受其他技术。

xargs不能识别bash别名

我试图运行以下命令: find . -iname '.#*' -print0 | xargs -0 -L 1 foobar 其中“foobar”是在我的.bashrc文件中定义的别名或函数(在我的情况下,它是一个函数,只有一个参数)。 显然,xargs并不认为它是可以运行的。 有没有一个聪明的办法来解决这个问题?

GNU并行根本不工作

我一直在尝试使用GNU并行,但是我从来没有能够得到它的function! 例如,运行(在一个非空的目录!): ls | parallel echo # Outputs single new line ls | parallel echo echo echo # Outputs three new lines. ls | parallel echo {} # /bin/bash: {}: command not found ls | parallel echo '{}' # /bin/bash: {}: command not found ls | parallel 'echo {}' # Outputs: {} ls | parallel […]

忽略xargs的空结果

考虑这个命令: ls /mydir/*.txt | xargs chown root 目的是将mydir中所有文本文件的所有者更改为root 问题是,如果在mydir中没有.txt文件,那么xargs会报错,说没有指定path。 这是一个无害的例子,因为正在抛出一个错误,但在某些情况下,就像我在这里需要使用的脚本一样,一个空白path被假定为当前目录。 因此,如果我从/home/tom/运行该命令,那么如果ls /mydir/*.txt没有结果,并且/home/tom/下的所有文件都将其所有者更改为root。 那么我怎么能让xargs忽略一个空的结果呢?

如何在xargs命令中使用>

我想find一个bash命令,让我grep目录中的每个文件,并将该grep的输出写入一个单独的文件。 我的猜测是要做这样的事情 ls -1 | xargs -I{} "grep ABC '{}' > '{}'.out" 但据我所知,xargs不喜欢双引号。 但是,如果删除双引号,则该命令会将整个命令的输出redirect到一个名为“{}”的文件,而不是一系列单个文件。 有没有人知道用xargs做这个的方法? 我只是用这个grepscheme作为例子来说明我的xargs问题,所以任何不使用xargs的解决scheme都不适用于我。

我怎样才能让xargs处理包含空格的文件名?

$ ls *mp3 | xargs mplayer Playing Lemon. File not found: 'Lemon' Playing Tree.mp3. File not found: 'Tree.mp3' Exiting… (End of file) 我的命令失败,因为文件“柠檬Tree.mp3”包含空格,所以xargs认为这是两个文件。 我可以使find + xargs像这样的文件名工作吗?

用多个命令作为参数的xargs

cat a.txt | xargs -I % echo % 在上面的例子中,xargs将echo %作为命令参数。 但在某些情况下,我需要多个命令来处理,而不是一个,例如: cat a.txt | xargs -I % {command1; command2; … } 但是xargs不接受这种forms。 我知道的一个解决scheme是我可以定义一个函数来封装这些命令,但它不是pipe道,我不喜欢它。 还有其他解决scheme吗?

我怎样才能用xargs来复制名称中有空格和引号的文件呢?

我试图在一个目录下面复制一堆文件,其中一些文件的名称中有空格和单引号。 当我尝试串起来find和grep与xargs ,我得到以下错误: find .|grep "FooBar"|xargs -I{} cp "{}" ~/foo/bar xargs: unterminated quote 任何build议更强大的使用xargs? 这是在MacOS 10.5.3与BSD xargs 。