grep递归与外卡无法正常工作

时间:2013-11-21 23:00:03

标签: linux grep

$ grep -r 9900 *.mk
grep: *.mk: No such file or directory
$ grep -R 9900 *.mk
grep: *.mk: No such file or directory

$ grep -V
GNU grep 2.5.4
我是否使用了错误的grep?或者是什么语法?谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用include标志:

grep -r --include="*.mk" 9900 .

grep手册页说:

  

- include:如果指定,则仅搜索与给定文件名模式匹配的文件。

答案 1 :(得分:1)

*.mk的解析发生在shell中,而不是在grep,之前 grep来应用递归。由于当前目录不包含与模式匹配的任何文件,因此将模式文本传递给grep。 Grep不知道如何扩展模式 - 它只是试图找到名为字面*.mk的文件,当然,它不能。

使用

find . -type f -name \*.mk -exec grep 9900 {} +

代替