Windows 7 上的 grep 参数无效

Windows 7 上的 grep 参数无效

我正在使用 grepGnuwin32在 Windows 上。

正在做:

grep -r INSERT *.sql

产量:

grep: *.sql: Invalid argument

知道为什么吗?

答案1

根据Grep 手册

-rgrep 是递归目录搜索,因此要使用它,您需要指定起始目录,而不是文件掩码。

例如:

grep -r INSERT .将查找所有文件的 INSERT,从当前目录 ( .) 开始并递归地遍历子文件夹。

指定递归文件夹检查指定文件通配符来限制搜索,可以使用该--include选项:

grep -r --include "*.sql" INSERT .

StackOverflow 上类似的问题/信息:我如何以递归方式进行 grep?

答案2

因为没有*.sql文件。

答案3

grep是一款很棒的工具,具有一些有趣的参数。然而,正如其名称所示(G全局搜索r常规xpression 和rint)用于匹配事物。如果您想要查找文件,请使用find

在这种情况下,您似乎想要INSERT在该树中的文件中查找文本。

为此,您需要执行以下操作:

find -name "*.sql" grep -h INSERT {} \;

find -name "*.sql"将找到所有这些文件,然后grep -h打印其中包含文本的文件INSERT


为什么你的方法不起作用?

因为通过输入,bash 会在执行命令之前grep -r ... *.sql尝试扩展它。但是目录中没有任何匹配项,因此它无法工作。*.sql*.sql

您可以将--include参数与正则表达式一起使用,但根据我的经验,它非常脆弱。

相关内容