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

在本例中,我想查看当前目录中的所有.bar文件,搜索术语FOO

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

当前回答

不需要找。如果你只是在一个特定的目录中寻找一个模式,这应该足够了:

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

其中-h是隐藏文件名的参数,例如从man grep:

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

注意你在用

- h, with-filename 打印每个匹配的文件名。当有时,这是默认值 要搜索的文件不止一个。

其他回答

不需要找。如果你只是在一个特定的目录中寻找一个模式,这应该足够了:

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

其中-h是隐藏文件名的参数,例如从man grep:

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

注意你在用

- h, with-filename 打印每个匹配的文件名。当有时,这是默认值 要搜索的文件不止一个。

从手册页:

-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.

把-H换成-H。查看man grep以获得更多关于选项的详细信息

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