www.delorie.com/gnu/docs/findutils/find_21.html   search  
 
Buy GNU books!


Finding Files

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.8 Contents

To search for files based on their contents, you can use the grep program. For example, to find out which C source files in the current directory contain the string `thing', you can do:

 
grep -l thing *.[ch]

If you also want to search for the string in files in subdirectories, you can combine grep with find and xargs, like this:

 
find . -name '*.[ch]' | xargs grep -l thing

The `-l' option causes grep to print only the names of files that contain the string, rather than the lines that contain it. The string argument (`thing') is actually a regular expression, so it can contain metacharacters. This method can be refined a little by using the `-r' option to make xargs not run grep if find produces no output, and using the find action `-print0' and the xargs option `-0' to avoid misinterpreting files whose names contain spaces:

 
find . -name '*.[ch]' -print0 | xargs -r -0 grep -l thing

For a fuller treatment of finding files whose contents match a pattern, see the manual page for grep.


  webmaster   donations   bookstore     delorie software   privacy  
  Copyright © 2003   by The Free Software Foundation     Updated Jun 2003