Find All Files Containing a String or Text on Linux and Mac
Let's look at how grep works on Linux and Mac, to find specific strings of text.
Join the DZone community and get the full member experience.Join For Free
Sometimes on Linux/UNIX computers, you will want to do a search for any files containing a particular string within it. This can be particularly useful when searching for specific things for a CI/CD pipeline.
On Linux or Mac, if we want to search a set of files for a specific string in a terminal, we use the grep.
The below will find any file that contains the term 'html' in the '/views' directory. It will return only the file names.
grep -rl ./views -e 'html'
Return the Text Itself
Again, this will find any file containing the string 'html' in the '/views' directory. It will return the line which has that text in it.
grep -r ./views -e 'html'
How To Use Grep on Linux/Mac
You can string other options together, to get different results. When we say
-r, for example, we mean 'recursive' - i.e. it will search through every folder. When we write
-rl, this means essentially
-r -l, which means search recursively, and return only the file name.
Below is a list of all grep options or switches, which you can add to your query to get the results you need:
- -r - search recursively.
- -l - return only the file name.
- -i - ignore the case.
- -w - search only for words, i.e. not text within words. For example, if we search for 'html', then somehtmltext would not match.
- -n - returns the line number, but doesn't work with -l.
- -s - suppress any error messages.
- -h - output the line itself, without the line number or file.
- -v - invert the search, i.e. searching for html with -v will return everything without html.
- -f - used to indicate a file you want to use which contains a regular expression.
- -x - match only if the whole lines only. This will only return for a search of html if that exists on its own line separately.
Published at DZone with permission of Johnny Simpson, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.