我需要 grep 一些文件以查看哪些文件包含某个单词:
grep -l word *
Run Code Online (Sandbox Code Playgroud)
接下来我需要 grep 该文件列表以查看哪些文件包含不同的单词。简单的方法可能是编写一个脚本,但我不知道如何工作。
小智 11
假设没有文件名包含空格、单引号、双引号或反斜杠字符(或以 - 开头grep
),您可以执行以下操作:
grep -l word * | xargs grep word2
Run Code Online (Sandbox Code Playgroud)
Xargs 将对第一个 grep 中的每个文件运行第二个 grep。
使用 GNU grep
/xargs
或兼容,您可以通过以下方式使其更可靠:
grep -lZ word ./* | xargs -r0 grep word2
Run Code Online (Sandbox Code Playgroud)
使用-Z
使grep
打印以 NUL 分隔的文件名,以便它可以与xargs -0
. 如果第一个没有找到任何东西-r
,则xargs
避免grep
运行第二个的选项grep
。