【发布时间】:2013-10-16 14:55:39
【问题描述】:
你如何 grep 并且只返回匹配的行?即结果中省略了路径/文件名。
在这种情况下,我想查看当前目录中的所有 .bar 文件,搜索术语 FOO
find . -name '*.bar' -exec grep -Hn FOO {} \;
【问题讨论】:
你如何 grep 并且只返回匹配的行?即结果中省略了路径/文件名。
在这种情况下,我想查看当前目录中的所有 .bar 文件,搜索术语 FOO
find . -name '*.bar' -exec grep -Hn FOO {} \;
【问题讨论】:
无需find。如果您只是在特定目录中寻找模式,这就足够了:
grep -hn FOO /your/path/*.bar
其中-h是隐藏文件名的参数,来自man grep:
-h, --no-filename
抑制输出文件名的前缀。这是默认设置 当只有一个文件(或只有标准输入)要搜索时。
请注意,您正在使用
-H, --with-filename
打印每个匹配的文件名。这是默认的,当有 搜索多个文件。
【讨论】:
alias grep。要省略别名,请输入 \grep ...
只需将-H 替换为-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.
【讨论】: