274

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

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

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

3 回答 3

441

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

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

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

-h,--无文件名

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

请注意,您正在使用

-H, --with-文件名

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

于 2013-10-16T14:58:40.513 回答
8

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

find . -name '*.bar' -exec grep -hn FOO {} \;
于 2013-10-16T14:59:13.297 回答
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.
于 2013-10-16T14:58:27.950 回答