Site icon Edumotivation

[Resolved] How do I find all files containing specific text on Linux?


I’m trying to find a way to scan my entire Linux system for all files containing a specific string of text. Just to clarify, I’m looking for text within the file, not in the file name.

When I was looking up how to do this, I came across this solution twice:

find / -type f -exec grep -H 'text-to-find-here' {} \;

However, it doesn’t work. It seems to display every single file in the system.

Is this close to the proper way to do it? If not, how should I? This ability to find text strings in files would be extraordinarily useful for some programming projects I’m doing.


Method #1

Do the following:

grep -rnw '/path/to/somewhere/' -e 'pattern'

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

grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern"
grep --exclude=\*.o -rnw '/path/to/somewhere/' -e "pattern"
grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/somewhere/' -e "pattern"

This works very well for me, to achieve almost the same purpose like yours.

For more options check man grep.

Method #2

You can use grep -ilR:

grep -Ril "text-to-find-here" /

Method #3

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

ack 'text-to-find-here'

Exit mobile version