grep -- list file name where match is found

I have a bunch of .html files in a directory. I want to look through each file and match a pattern (MD5). All of that is easy enough. The problem is I need to know what file the match was found in.

cat *.html | grep 75447A831E943724DD2DE9959E72EE31

Only returns the HTML page content where the match is found, but it doesn't tell me the file which it was found in. How can I get grep to show me the filename where my match is found?


Solution 1:

grep -H 75447A831E943724DD2DE9959E72EE31 *.html

-H, --with-filename
              Print the file name for each match. This is
              the default when there is more than one file
              to search.

Solution 2:

I use this one all the time to look for files containing a string, RECURSIVELY in a directory (that means, traversing any sub sub sub folder) grep -Ril "yoursearchtermhere"

  • R is to search recursively (following symlinks)
  • i is to make it case insensitive
  • l is just to list the name of the files.

so answering your question grep -l '75447A831E943724DD2DE9959E72EE31' *.html will do but you can just do grep -Ril '75447A831E943724DD2DE9959E72EE31' to look for that string, case insensitive, in any file in any subfolder