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/