'grep without showing path/file:line
How do you grep and only return the matching line? i.e. The path/filename is omitted from the results.
In this case I want to look in all .bar files in the current directory, searching for the term FOO
find . -name '*.bar' -exec grep -Hn FOO {} \;
Solution 1:[1]
No need to find. If you are just looking for a pattern within a specific directory, this should suffice:
grep -hn FOO /your/path/*.bar
Where -h is the parameter to hide the filename, as from man grep:
-h, --no-filename
Suppress the prefixing of file names on output. This is the default when there is only one file (or only standard input) to search.
Note that you were using
-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:[2]
Just replace -H with -h. Check man grep for more details on options
find . -name '*.bar' -exec grep -hn FOO {} \;
Solution 3:[3]
From the man page:
-h, --no-filename
Suppress the prefixing of file names on output. This is the default when there
is only one file (or only standard input) to search.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Dominic Rodger |
| Solution 2 | |
| Solution 3 | user229044 |
