grep'ing从前一个grep输出的文件

Mik*_*ike 0 linux grep pipe

我不知道这是否可能,或者grep是错误的工具,还是什么,但我想要做的是:

grep -rsI "some_string" *.c 
Run Code Online (Sandbox Code Playgroud)

然后将发现结果的文件列表导入第二个grep:

grep -rsI "second_string" <list of files from first grep>
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过以下方式将确切的行传输到第二个grep:

grep -rsI "some_string" *.c | grep "second_string"
Run Code Online (Sandbox Code Playgroud)

但这不是我想要的,我不想只搜索以前点击的行,但是这些行所在的整个文件.这甚至可能吗?有任何想法吗?

Sea*_*ght 9

grep -rsIl "some_string" *.c | xargs grep -sI "second_string"
Run Code Online (Sandbox Code Playgroud)


oua*_*uah 5

使用-l选项列出匹配的文件,然后xargs使用命令应用grep到这些文件。

grep -l -rsI "some_string" *.c | xargs grep "second_string"
Run Code Online (Sandbox Code Playgroud)