2012-09-17 81 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