grep rli "stringName" * | xargs <second_command> <list_of files>
以上代码是否适用于所提及的功能?
我是初学者,不知道如何使用它。
答案 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扩展名。)
依次为每个匹配文件执行第二个命令。如果您想在最后使用所有匹配文件的列表执行,请将上一个\;
更改为+