2012-09-17 52 views
0

我不知道这是可能的,或者如果grep的是错误的工具,或什么,但我想做的事是这样的:grep'ing文件输出从之前的grep

grep -rsI "some_string" *.c 

然后通过管道文件的列表,结果被发现到第二grep的:

grep -rsI "some_string" *.c | grep "second_string" 

grep -rsI "second_string" <list of files from first grep> 

我知道我可以通过管道的确切行到第二的grep

但这就是不是我在找什么,我不想仅仅搜索以前点击的行,而是那些行的整个文件。这甚至可能吗?有任何想法吗?

回答

9
grep -rsIl "some_string" *.c | xargs grep -sI "second_string" 
+0

+1正是我在找的,谢谢! – Mike

+0

有一个很好的方法把它扔进bash shell吗?例如:'alias grep2 ='grep -rsIl $ 1 * | xargs grep $ 2''但工作? – Mike

+0

'grep2(){grep -rsIl“$ 1”* .c | xargs grep“$ 2”; }' –

3

使用-l选项列出匹配,则xargs命令文件,这些文件适用grep

grep -l -rsI "some_string" *.c | xargs grep "second_string" 
+0

+1 Thannks!而已! – Mike