xargs:使用所有参数运行命令一次

xargs:使用所有参数运行命令一次

我的目标是获取已修改的文件列表git,然后运行rspec命令将每个文件作为参数传递。

目前我有:

$ git status -s | awk '{if ($1 == "M") print $2}' | tr "\\n" "\\0" | \
    xargs -0 -I % rspec -f documentation %

这在技术上是可行的,但它rspec针对每个修改的文件运行,我希望它运行:

$ rspec path/to/file/1 path/to/file/2 ...

有人知道我怎样才能实现这一目标吗?

答案1

... | xargs -0 rspec -f documentation 

rspec请注意,如果命令行太长,则可能会调用多次。这不是问题,rspec因为调用它一次的原因是性能,但不要将它用于诸如xargs -0 tar cf archive.tar任何第二次、第三次……运行都会创建一个存档覆盖先前运行的输出之类的情况。

相关内容