Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Wondering if anyone can help me, I'm very rusty with bash and seem to hit a bit of an impasse.

I'm storing a list of strings in a file and would like to read the file and pipe each line returned to grep which in turn searches a directory for files containing the string.

Initial attempt:

cat filename | grep -lr *

However this is not returning any output.

Can anyone give me some directions on the best approach?

share|improve this question
add comment

2 Answers

Avoid that useless use of cat. You can of course solve this with xargs and the like. But that's over-complex compared to a simple while loop.

while read i 
do
    grep -r -- "$i" directory/
done < filename
share|improve this answer
1  
Are you sure about that peth? Pretty sure it finishes after the last line of filename. –  PriceChild Jun 2 '11 at 9:21
    
Ah apologies, never saw the sneaky edit. Never used the pipe up there before either.. –  PriceChild Jun 2 '11 at 13:01
add comment

I would try this.

cat filename | while read line ; do grep -lr "$line" * ; done

You could also pipe it to "sort -u" so you don't get duplicate.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.