Unix 如何grep包含特定单词的文件,并将文件列表作为参数传递给第二个命令? grep rli“stringName”*| xargs

Unix 如何grep包含特定单词的文件,并将文件列表作为参数传递给第二个命令? grep rli“stringName”*| xargs,unix,grep,Unix,Grep,上述代码是否适用于上述功能 我是一个初学者,不知道如何使用它。您只是缺少了grep选项的连字符。以下几点应该行得通 grep rli "stringName" * | xargs <second_command> <list_of files> 或者将-Z选项与xargs-0 find . -type f -exec grep -qi "stringName" {} + -print0 | xargs -0 <second_command> grep-rl

上述代码是否适用于上述功能


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

您只是缺少了
grep
选项的连字符。以下几点应该行得通

grep rli "stringName" * | xargs <second_command> <list_of files>
或者将
-Z
选项与
xargs-0

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

扩展jksah的答案,这个答案已经很好了

grep -rli "stringName" * -Z | xargs -0 <second_command>
这具有更便于移植的优点(
-print0
-0
是gnu扩展)


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

您是否考虑过执行该命令?如果第二个\u命令只能运行一次,那么如果
grep
返回的文件多于
xargs
一个命令行所能容纳的文件,则会出现问题;然后,第二个_命令将在整个列表的切片上运行多次。如果第二个_命令可以读取文件列表,如
grep-f-
zip-@
,这是一个很好的解决方法。您缺少
-rli
之前的破折号选项。另外,
*
-r
是冗余的;只需将当前目录
改为+1,即可获得完全正确的解决方案。(很少发现的东西)。
-qli
毫无意义<代码>-qi为enough@JoSo很高兴你觉得它有用。谢谢你指出这一点。更新了ans。我发现中也支持
-print0
。中的偶数
-0
。还是我遗漏了什么?@jkshah,我只是想限制POSIX的功能。它更干净。
grep -rli "stringName" * -Z | xargs -0 <second_command>
find . -type f -exec grep -qi "regex" {} \; -exec "second_command" {} \;