如何grep并只返回匹配的行?即路径/文件名从结果中被省略。
在本例中,我想查看当前目录中的所有.bar文件,搜索术语FOO
find . -name '*.bar' -exec grep -Hn FOO {} \;
从手册页:
-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.
不需要find。如果你只是在一个特定的目录中寻找一个模式,这应该足够了:
find
grep -hn FOO /your/path/*.bar
其中-h是隐藏文件名的参数,如man grep:
-h
man grep
- h, no-filename 输出时禁止文件名前缀。这是默认值 当只有一个文件(或只有标准输入)需要搜索时
- h, no-filename
输出时禁止文件名前缀。这是默认值 当只有一个文件(或只有标准输入)需要搜索时
注意你在用
- h, with-filename 打印每个匹配项的文件名。当有时,这是默认值 . .
- h, with-filename
打印每个匹配项的文件名。当有时,这是默认值
只需将-H替换为-h。有关选项的更多详细信息,请查看man grep
-H
find . -name '*.bar' -exec grep -hn FOO {} \;