如何grep包含特定单词的文件并将文件列表作为参数传递给第二个命令?

时间:2013-11-21 11:16:10

标签: unix grep

grep rli "stringName" * | xargs <second_command> <list_of files>

以上代码是否适用于所提及的功能?

我是初学者,不知道如何使用它。

2 个答案:

答案 0 :(得分:2)

您只是缺少grep选项的连字符。以下应该工作

grep -rli "stringName" * | xargs <second_command>

考虑到上面的命令无法处理文件名中的空格或奇怪的字符,更强大的解决方案是使用find

find . -type f -exec grep -qi "stringName" {} + -print0 | xargs -0 <second_command>

-Z

使用xargs -0选项
grep -rli "stringName" * -Z | xargs -0 <second_command>

答案 1 :(得分:0)

延伸jkshah的答案,这已经相当不错了。

find . -type f -exec grep -qi "regex" {} \; -exec "second_command" {} \;

这样做的好处是更具可移植性(-print0-0是gnu扩展名。)

依次为每个匹配文件执行第二个命令。如果您想在最后使用所有匹配文件的列表执行,请将上一个\;更改为+