在多个查找结果上执行grep

时间:2013-03-25 17:28:33

标签: shell grep cygwin

我的问题与this one非常相似,只是我正在对多个grep查询执行find搜索。 (我必须这样做,因为我必须将我的命令提交给实时服务器,并且我想尽可能少地修改它们。)

这是我的问题:

find /c/some/dir/ -iname "*html" -o -iname "*tpl" -exec grep -inH 'search_string' {} \;

使用-o选项,grep搜索将返回以tpl结尾的文件中“search_string”的所有实例。它完全忽略了我传入的html扩展......

有没有人遇到过这个?我怎么告诉find在html和tpl扩展上执行grep?

(我正在运行Cygwin,过去曾有过一些Windows翻译问题,所以这可能是罪魁祸首......)

1 个答案:

答案 0 :(得分:2)

我认为您需要对两个-iname子句进行分组,如下所示:

find /c/some/dir/ \( -iname "*html" -o -iname "*tpl" \) -exec grep -inH 'search_string' {} \;

逻辑或优先级较低,这意味着-exec位仅适用于您的-iname "*tpl"子句。