我想在搜索术语grep
的文件夹上使用bash foobar
。然后,我希望输出所有匹配的文件名和行号,其中找到了匹配项。这可能吗?
我需要输出看起来像:
{{filename}}:{{line_number}} - {{matched_text}}
答案 0 :(得分:9)
grep -nrH 'regex' /dir/
-H
是添加文件名的选项,-n
添加行号,-r
是递归的
即使没有-H
,我也会获得文件名,除非只有一个文件。
为不区分大小写的
添加-i
为扩展正则表达式添加-E
答案 1 :(得分:3)
使用-n或--line-number选项
grep -n foobar
答案 2 :(得分:1)
是;尝试:
grep -nr "expression" /path/to/files/
答案 3 :(得分:0)
awk
的解决方案:
awk '/REGEX/{print FILENAME":"FNR" - "$0}' PATH
对于递归路径搜索,
find PATH-TO-START -type f -exec awk '/REGEX/{print FILENAME":"FNR" - "$0}' {} \;