HowTo: Use Grep Command In Unix / Linux To Search Subdirectories

by on October 20, 2012 · 5 comments· LAST UPDATED October 20, 2012

in , ,

I would like to search and find all files which contain a word called "main()" for all directories located in $HOME/project/school. How do I use the grep command to find text including all subdirs under Unix or Linux operating systems?

The grep command is used to search text for patterns (words) specified on the command line. You need to use the following syntax:

Tutorial details
DifficultyEasy (rss)
Root privilegesNo
Requirementsgrep
Estimated completion timeN/A


grep -r 'word' /path/to/dir

The -r option is used to search recursively through an entire directory tree. For example, the following would search all files in the current directory and in all of its subdirectories including their subdirectories for every line containing the word "main()":

 
grep -r 'main()' ~/projects/school
 

You can also display the name of each file from which output would normally have been printed with the -l option:

 
grep -rl 'main()' ~/projects/school
 

You can print the file name for each match with -H option:

 
grep -rH 'main()' ~/projects/school
 

Finally, you can display line number too with the -n option:

 
grep -rHn 'main()' ~/projects/school
 

The -i option instructs grep to ignore case. Thus, for instance, the the following example could very easily be converted to a case-insensitive search as follows (match main(), MAIN(), mAiN() and so on):

 
grep -rHni 'main()' ~/projects/school
 

In this example, search for an IP address 192.168.1.5:

 
grep -Hrn --color '\<192.168.1.5\>' /etc
 

Sample outputs:

Fig.01: grep in action

Fig.01: grep in action

TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 5 comments… read them below or add one }

1 Jalal Hajigholamali October 20, 2012 at 12:48 pm

Hi,

Thanks for this article

Reply

2 M.S. Babaeu October 20, 2012 at 9:15 pm

That’s great !!
I always did
# find /path/to/search | xargs grep ‘main()’
with your method you have more control over the output.

Reply

3 Babur October 22, 2012 at 3:45 am

Great article!

Reply

4 Steve Klabnik October 22, 2012 at 6:02 am

ack is better

Reply

5 lokesh October 25, 2012 at 2:41 pm

good articel

Reply

Leave a Comment

Tagged as: , , , , ,

Previous Faq:

Next Faq: