Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

Given this example folder structure:


How do I do a recursive text search on all *.txt files with grep from "/"?

("grep -r <pattern> *.txt" fails when run from "/", since there are no .txt files in that folder.)

share|improve this question
add comment

5 Answers

up vote 22 down vote accepted

My version of GNU Grep has a switch for this:

grep -R foo --include '*.txt' *

"--include=GLOB Search only files whose base name matches GLOB (using wildcard matching as described under --exclude)."

share|improve this answer
add comment

If you have a large number of files it would be useful to incorporate xargs into the command to avoid an 'Argument list too long' error.

find . -name '*.txt' -print | xargs grep <pattern>
share|improve this answer
If there are spaces in any of the file or directory names, use this form: find . -name '*.txt' -print0 | xargs -0 grep <pattern> –  Jason Luther May 19 '09 at 13:37
And of course there's the issue of filenames that start with -. –  T.J. Crowder Feb 7 '11 at 12:08
add comment
find . -name '*.txt' -type f -exec grep <pattern> {} \;
share|improve this answer
you might want to use "find . -name '*.txt' -type f -exec grep <pattern> {} +" instead so that it rather behaves similiar the verision with from Mark Robinson - works only with GNU find to my knowledge –  Server Horror Jun 10 '09 at 8:49
add comment

Mannis answer would fork a new grep-process for every textfile. If you have lots of textfiles there, you might consider grepping every file first and pick the .txt-files when thats done:

grep -r <pattern> * | grep \.txt:

That's more disk-intensive, but might be faster anyway.

share|improve this answer
add comment

You may want to take a look at ack at http://betterthangrep.com, which has facilities for selecting files to search by filetype.

share|improve this answer
add comment

Your Answer


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.