我经常发现自己使用 grep 搜索一堆代码,以便确定我要查找的内容。有时我得到的文件列表比我希望的要长一点。此时我想执行第二次 grep,但只搜索第一次 grep 搜索返回的文件。有办法吗?我基本上想交叉引用两个 grep 搜索,并只返回包含两个结果的文件。
答案1
grep -lZ "first string" * | xargs -0 grep -l "second string"
首先
grep
将返回包含的文件first string
。第二个
grep
将对 执行相同的操作second string
,但会针对第一个的结果进行操作grep
。grep 的参数
-Z
和-0
xargs 的参数协同工作,以支持包含空格的文件名。
编辑-感谢阿杰迪32:
xargs
允许您使用一个命令的结果作为另一个命令的参数。
来自xargs
的维基百科文章,xargs 是 Unix 和大多数类 Unix 操作系统上的命令,用于从标准输入构建和执行命令行。