如何将结果文件从一个grep传递传递到另一个grep传递,以便我只用第二遍传递子集?

NSA*_*NSA 5 linux bash grep

我希望能够使用我的第一个grep语句获取我找到的文件,例如:grep -r Makefile*然后将grep传递中找到的文件传递给第二个grep,例如: grep {files}'-lfoo'

我该怎么做呢?我知道必须有办法.

谢谢.

Ign*_*ams 7

grep -l firstmatch * | xargs grep secondmatch {}
Run Code Online (Sandbox Code Playgroud)

  • 我建议:`grep -l firstmatch | xargs grep - secondmatch`.这将导致grep尽可能少地被调用.也没有`-I {}`(或现在已弃用的-i),不会解释大括号.此外,您的命令会导致为第一个grep调用找到的每个文件运行grep,并且将grep为`{}`(或根据您的grep变量替换它). (3认同)
  • @NSA:`xargs`是一个命令.它读取参数列表的标准输入(通常是文件名),然后将它们与命令的参数连接起来(在本例中为'grep {} secondmatch`'以创建执行的命令.有关更多信息,请使用RTFM . (2认同)