Recursive search for files that hold some specific text

7,186

Solution 1

Use grep instead of sed:

find /var/www -type f -print0 | xargs -0 grep -i 'old string'

From the way you phrase the question, it seems like you're not yet too familiar with grep. Read more about its options in its man page type: man grep at your command line.

update to answer comment -- try adding the -l option to show just file names. The -i makes the search case insensitive. The easy to use both is with a single dash: grep -il

Solution 2

You can also use grep alone without find:

grep -Rli 'old string' /var/www > list_of_files

Solution 3

You could try adding the -l flag to the command to only list the file names

find /var/www -type f -print0 | xargs -0 grep -li 'old string'
Share:
7,186

Related videos on Youtube

oshirowanen
Author by

oshirowanen

Updated on September 17, 2022

Comments

  • oshirowanen
    oshirowanen over 1 year

    How do I recursively generate a text file which has a list of all files on my server which contain a specific string anywhere in the files?

    I know the following command can be used to replace a string recursively

    find /var/www -type f -print0 | xargs -0 sed -i 's/old string/new string/g'
    

    I do not want to replace the string, I just want a list of all files which contain the string.

    • Shekhar
      Shekhar over 13 years
      For a windows user I would have suggested to writes a batch file which saves the output to a file and put it in the scheduler . Try whatever is the linux substitute for this process
  • oshirowanen
    oshirowanen over 13 years
    This does not seem to give me just the paths/files containing the string I am looking for. For some reason, I am also getting the text from the files searched too.
  • Doug Harris
    Doug Harris over 13 years
    Added bit about -l