grep不显示路径/文件:行


234

你如何grep只返回匹配的行?即结果中省略了路径/文件名。

在这种情况下,我想查看当前目录中的所有.bar文件,并搜索FOO。

find . -name '*.bar' -exec grep -Hn FOO {} \;

Answers:


375

没必要find。如果您只是在特定目录中寻找模式,就足够了:

grep -hn FOO /your/path/*.bar

-h隐藏文件名的参数在哪里,例如man grep

-h,--no-文件名

在输出中禁止文件名的前缀。当只有一个文件(或只有标准输入)要搜索时,这是默认设置。

请注意,您使用的是

-H,--with-filename

打印每个匹配项的文件名。当要搜索多个文件时,这是默认设置。


行号可以省略吗?
javadba

@javadba,您可能正在使用别名,键入alias grep。要忽略别名,请输入\grep ...
fedorqui'SO stop harm'

1
是的,它使用别名。
javadba

8

只需替换-H-h。检查man grep有关选项的更多详细信息

find . -name '*.bar' -exec grep -hn FOO {} \;

6

从手册页:

-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.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.