Linux:使用find和grep在文件中查找关键字并计算出现次数

时间:2012-08-30 14:16:50

标签: find search-engine wc

我正在使用php构建的搜索脚本中执行此bash命令:

find myFolder -type f -exec grep -r KEYWORD {} + 

find myFolder -type f -exec grep -r KEYWORD {} + | wc -l

find myFolder -type f | wc -l

第一行告诉我找到KEYWORD的文件名。

第二行给出了出现次数,第三行给出了文件总数。

有没有办法更优雅,更快地完成这项工作?

1 个答案:

答案 0 :(得分:1)

如果您避免-exec,那么您可以获得更高的效率,这会使每个文件匹配一个forkxargs在这里是更好的选择。所以我会做这样的事情:

find myFolder -type f -print0 | xargs -0 grep KEYWORD

find myFolder -type f -print0 | xargs -0 grep KEYWORD | wc -l

最后一个应该没问题,至少在GNU find。

-print0-0可确保正确处理包含空格的文件名。

请注意,grep -r`意味着递归grepping,但由于您在每次调用时只提供一个文件名,因此它是多余的。