如何对上一次 grep 返回的文件执行第二次 grep?

如何对上一次 grep 返回的文件执行第二次 grep?

我经常发现自己使用 grep 搜索一堆代码,以便确定我要查找的内容。有时我得到的文件列表比我希望的要长一点。此时我想执行第二次 grep,但只搜索第一次 grep 搜索返回的文件。有办法吗?我基本上想交叉引用两个 grep 搜索,并只返回包含两个结果的文件。

答案1

grep -lZ "first string" * | xargs -0 grep -l "second string"
  • 首先grep将返回包含的文件first string

  • 第二个grep将对 执行相同的操作second string,但会针对第一个的结果进行操作grep

  • grep 的参数-Z-0xargs 的参数协同工作,以支持包含空格的文件名。


编辑-感谢阿杰迪32

xargs允许您使用一个命令的结果作为另一个命令的参数。

来自xargs的维基百科文章xargs 是 Unix 和大多数类 Unix 操作系统上的命令,用于从标准输入构建和执行命令行。

相关内容