I am looking for a specific phrase in CentOS and I am not sure where and which file or even directory that has the file is. How can I do a complete recursive search on a phrase. Thanks


man grep
For this example, grep -i -R "your phrase" directory
-i means case insensitive
-R means recursively

If you don't know which directory, use / - but be prepared for it to take a long time.

  • as I said I have no idea about directory – user50946 Sep 24 '10 at 13:45
  • updated with the root directory. It will take a long time though. – James L Sep 24 '10 at 13:46
  • I did what you said but there are a lots of records..is there any way to save this to text file? – user50946 Sep 24 '10 at 13:49
  • 3
    read about piping and redirects. > saves to a file, >> appends to a file, and | pipes to a process. So, in this case, grep -i -R "your phrase" directory > /path/to/your/textfile - also consider adding -l to the grep arguments if you just want a list of the files (as per @Richard Holloway – James L Sep 24 '10 at 13:50
  • 1
    you can redirect the output to a file with grep -i -R "your phrase" directory > myfile.txt, or you could use less to view the result with grep -i -R "your phrase" directory | less – Avada Kedavra Sep 24 '10 at 13:52

You can use this one liner to get a list of all files in this folder and sub folders, containing the phrase "The phrase I am looking for".

  find . -print0 | xargs -0 grep "The phrase I am looking for" -l
  • 1
    Does this add any functionality over grep's recursive flag? – James L Sep 24 '10 at 13:52
  • @James: No. I use it mainly to get the extra find functionality like specifying file name extensions (with -name "*.php" for example) and so on but in this example it adds nothing. – Richard Holloway Sep 24 '10 at 13:57
  • I'm also a pipe abuser. Once you're used to it it's hard to stop! – pauska Sep 24 '10 at 14:20
  • My servers cost enough money and do so little in return, what is a few extra processes here and there? :) – Richard Holloway Sep 24 '10 at 15:41

I would recommend ack.

Go to the uppermost level directory that you dare searching and then type:

ack -a "Phrase"

I don't really use grep anymore because of ack.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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