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