linux - [Solved-5 Solutions] How to find all files containing specific text on Linux ? - ubuntu - red hat - debian - linux server - linux pc



Linux - Problem :

How to find all files containing specific text on Linux ?

Linux - Solution 1:

grep -rnw '/path/to/somewhere/' -e 'pattern'
click below button to copy the code. By - Linux tutorial - team
  • -r or -R is recursive,
  • -n is line number, and
  • -w stands for match the whole word.
  • -l (lower-case L) can be added to just give the file name of matching files.

Along with these, --exclude, --include, --exclude-dir or --include-dir flags could be used for efficient searching:

  • This will only search through those files which have .c or .h extensions:
grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern"
click below button to copy the code. By - Linux tutorial - team

This will exclude searching all the files ending with .o extension:

grep --exclude=*.o -rnw '/path/to/somewhere/' -e "pattern"
click below button to copy the code. By - Linux tutorial - team
  • Just like exclude files, it's possible to exclude/include directories through --exclude-dir and --include-dir parameter. For example, this will exclude the dirs dir1/, dir2/ and all of them matching *.dst/:
grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/somewhere/' -e "pattern"
click below button to copy the code. By - Linux tutorial - team

Linux - Solution 2:

You can use grep -ilR:

grep -Ril "text-to-find-here" /
click below button to copy the code. By - Linux tutorial - team
  • i stands for ignore case (optional in your case).
  • R stands for recursive.
  • l stands for "show the file name, not the result itself".
  • / stands for starting at the root of your machine.

Linux - Solution 3:

It is like grep for source code. You can scan your entire file system with it.

ack 'text-to-find-here'
click below button to copy the code. By - Linux tutorial - team

In your root directory.

You can also use regular expressions, specify the filetype, etc.

Linux - Solution 4:

You can use:

grep -r "string to be searched"  /path/to/dir
click below button to copy the code. By - Linux tutorial - team
  • The r stands for recursive and so will search in the path specified and also its sub-directories. This will tell you the file name as well as print out the line in the file where the string appears.

Or a command similar to the one you are trying (example: ) for searching in all javascript files (*.js):

find . -name '*.js' -exec grep -i 'string to search for' {} \; -print
click below button to copy the code. By - Linux tutorial - team

This will print the lines in the files where the text appears, but it does not print the file name.

Linux - Solution 5:

Use this:

grep -inr "Text" folder/to/be/searched/
click below button to copy the code. By - Linux tutorial - team

Related Searches to - linux - linux tutorial - How to find all files containing specific text on Linux ?