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

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

share|improve this question

3 Answers 3

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.

share|improve this answer
    
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 Lawrie 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 Lawrie 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
share|improve this answer
1  
Does this add any functionality over grep's recursive flag? –  James Lawrie 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.

share|improve this answer
    
ack is great. You can install it on CentOS from the rpmforge repo. See rpmrepo.org/RPMforge/Using for details on how to set this up. –  Richard Holloway Sep 24 '10 at 19:52

Your Answer

 
discard

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.