如何过滤通过管道传输到 xargs 的文件列表?

如何过滤通过管道传输到 xargs 的文件列表?

我的命令:git show --pretty="format:" --name-only返回文件列表。然后我使用 xargs 在这些文件上运行 shell 脚本:

git show --pretty="format:" --name-only  | xargs -i phpmd $dir/'{}' text codesize,unusedcode,naming

但是,我只想对带有.php扩展名的文件运行该 xargs 命令。如何过滤不需要的文件?

答案1

... | grep '\.php$' | ...

答案2

如果你的文件名可能包含空格或引号,你应该使用 GNU Parallelhttp://www.gnu.org/software/parallel/而不是 xargs,因为 xargs 可能会因分隔符问题导致令人不快的意外http://en.wikipedia.org/wiki/Xargs#The_separator_problem

git show --pretty="format:" --name-only  | grep '\.php$' | parallel phpmd $dir/{} text codesize,unusedcode,naming

GNU 观看 GNU Parallel 的介绍视频以了解更多信息: http://www.youtube.com/watch?v=OpaiGYxkSuQ

相关内容