What is the option for grep
that will allow me only to print the matching file and not the line within a file that matches the criteria?
Asked
Active
Viewed 1.4e+01k times
256

codeforester
- 39,467
- 16
- 112
- 140

paultop6
- 3,691
- 4
- 29
- 37
-
1I typically only use this command when searching for files that call a specific function or method. – Gearoid Murphy Sep 20 '12 at 08:26
-
use case (search and replace foo->bar in all files recursively): sed -i 's/foo/bar/' \`grep -lR 'foo'\` – user323094 Sep 08 '13 at 20:04
-
6Possible duplicate of [How can I use grep to show just filenames (no in-line matches) on linux?](http://stackoverflow.com/questions/6637882/how-can-i-use-grep-to-show-just-filenames-no-in-line-matches-on-linux) – 7ochem Nov 30 '15 at 13:21
4 Answers
403
grep -l
(That's a lowercase L)

Vincent Scheib
- 17,142
- 9
- 61
- 77

a'r
- 35,921
- 7
- 66
- 67
-
6[Letter O Considered Harmful](https://en.wikipedia.org/wiki/Fortran#Humor) – user234461 Jan 23 '20 at 13:19
52
You can use the Unix-style -l
switch – typically terse and cryptic – or the equivalent --files-with-matches
– longer and more readable.
The output of grep --help
is not easy to read, but it's there:
-l, --files-with-matches print only names of FILEs containing matches

Iain Samuel McLean Elder
- 19,791
- 12
- 64
- 80
4
Also remember one thing. Very important
You have to specify the command something like this to be more precise
grep -l "pattern" *

Vinod Kumar
- 562
- 5
- 12