是否可以递归搜索并使用给定的文件模式?
我正在尝试做相当于
find ./ -name "*.[c|h]" -exec grep -Hn PATTERN {} \;
显然你可以使用 grep 的 -r 标志,但是当我指定文件名模式时,例如:
grep -Hn -r PATTERN *.c
它仅在当前目录中查找 *.c 文件,而不是递归查找。
我发现了这个,但它没有谈论指定文件名:递归 grep 与 find / -type f -exec grep {} \;哪个更有效/更快?
答案1
至少在最新版本的 GNU 中,您可以在参数grep
中使用 glob 模式--include
grep -Hrn --include="*.[ch]" PATTERN .
.
[在 GNU grep > 2.11 中,使用 时可以省略显式起始目录-r
]