Linux: How to find all the files containing a particular text string?

by Yang Yang on August 27, 2009

in Linux Server Administration Tips

At Linux command line, to find a particular text string in all the files from the current directory recursively (that is, including all those files from the child or grandchild directories), use something like this via SSH:

find . -exec grep -l "needle" {} \;

This command searches through all directories from the current directory recursively for the files that contain the string “needle”.

To search only .php files:

find *.php -exec grep -l "needle" {} \;

To search a specific directory:

find dirname -exec grep -l "needle" {} \;

To find all .php files that contain “needle” in all the directories under “somedir”:

find somedir -name *.php -exec grep -l "needle" {} \;

Related Posts

{ 2 comments… read them below or add one }

Yang Yang September 17, 2009 at 12:11 pm

BTW, if it spits out this error:

find: paths must precede expression

Embrace necessary parameters in double quotes “”. E.g.,

find somedir -name “*.php” -exec grep -l “needle” {} \;

Reply

Pradeep August 18, 2010 at 6:17 pm

Any harm if I use xargs?

find somedir -name “*.php” | xargs grep -l “needle”

Reply

Leave a Comment

Previous post:

Next post: