grep没有显示path/文件:行

你怎么grep,只返回匹配的行? 即结果中省略了path/文件名。

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

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

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

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

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

-h,–no-filename

禁止输出文件名的前缀。 当只有一个文件(或只有标准input)要search时,这是默认的。

请注意,我们使用

-H,–with-filename

打印每个比赛的文件名。 当有多个文件要search时,这是默认的。

-hreplace-H 。 查看man grep了解更多关于选项的细节

 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.