grep 不显示路径/文件:行

新手上路,请多包涵

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

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

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

原文由 Allan Thomas 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

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

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

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

-h,–无文件名

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

请注意,您正在使用

-H, –with-文件名

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

原文由 fedorqui 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

原文由 jkshah 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题