How do I find all files containing a specific string of text within their file contents?
The following doesn't work. It seems to display every single file in the system.
find / -type f -exec grep -H 'text-to-find-here' {} \;
How do I find all files containing a specific string of text within their file contents?
The following doesn't work. It seems to display every single file in the system.
find / -type f -exec grep -H 'text-to-find-here' {} \;
grep -r "specific_text" directory_path
Explanation:
- `grep`: The command-line utility for searching plain-text data sets for lines that match a given pattern.
- `-r`: Recursive search. This option allows `grep` to search for the specific text in all files and subdirectories.
- `"specific_text"`: Replace this with the text you want to search for. Make sure to enclose the text in double quotes if it contains spaces.
- `directory_path`: Specify the directory path where you want to search for the specific text. You can use a dot (`.`) to search in the current directory.
Example:
Let's say we want to search for the text "example" in all files inside the `/home/user/documents/` directory. Here's how the command would look:
grep -r "example" /home/user/documents/
This command would search for "example" in all files and subdirectories inside the `/home/user/documents/` directory.
Note: Depending on your system configuration, you might need to use `sudo` before the `grep` command to search in protected directories.Answered, September 11th, 2023
13308
Do the following:
grep -Rnw '/path/to/somewhere/' -e 'pattern'
-r
or -R
is recursive ; use -R
to search entirely-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.-e
is the pattern used during the searchAlong with these, --exclude
, --include
, --exclude-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"
This will exclude searching all the files ending with .o extension:
grep --exclude=\*.o -rnw '/path/to/somewhere/' -e "pattern"
For directories it's possible to exclude one or more directories using the --exclude-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/search/' -e "pattern"
This works very well for me, to achieve almost the same purpose like yours.
For more options, see man grep
.
Answered, June 6th, 2013
2237
Use grep -ilR
:
grep -Ril "text-to-find-here" /
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.Answered, June 6th, 2013
How do I undo the most recent local commits in Git?
How can I remove a specific item from an array in JavaScript?
How do I delete a Git branch locally and remotely?
How can I find all files containing a specific text (string) on Linux?
How do I revert a Git repository to a previous commit?
How do I create an HTML button that acts like a link?
How do I check out a remote Git branch?
How do I force "git pull" to overwrite local files?
ffmpeg split avi into frames with known frame rate
Awk - replacement with seperators
If a folder does not exist, create it
Amazon Linux: "apt-get: command not found"
Calling execv() failed
Can you use a std::atomic_bool to ensure mutual exclusion in a code block?
How to automatically add user account AND password with a Bash script?
Why write to closed pipe returns success