Linux

Find all files containing a string on Linux/Mac

Sponsor

Sometimes on linux or unix computers, you want to do a search for any files with a particular string within it. This can be useful when searching for specific things for a CI/CD pipeline.

Fortunately, it is not too hard in linux to do this with grep.

Find files which contain a particular string

Return the filename only

The below will find any file that contains the term 'html' in the '/views' directory. It will return only the file names.

shell Copy
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.

shell Copy
grep -r ./views -e 'html'

All Grep Options/Switches

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. efhtmlwq will not work with this option if searching for html.
  • -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.
Last Updated Saturday, 22 May 2021

Subscribe to Newsletter

Subscribe to stay up to date with our latest web development and software engineering posts via email. You can opt out at any time.

Not a valid email