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


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

上面的代码是否适用于提到的功能?

我是初学者,不确定如何使用它。

您只是缺少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>

扩展 jkshah 的答案,这已经相当不错了。

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

这样做的好处是更便携(-print0-0是GNU扩展(。

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

最新更新