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扩展(。
它依次为每个匹配的文件执行第二个命令。如果要改为在末尾使用所有匹配文件的列表执行,请将最后一个;
更改为+