我正在使用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的文件名。
第二行给出了出现次数,第三行给出了文件总数。
有没有办法更优雅,更快地完成这项工作?
答案 0 :(得分:1)
如果您避免-exec
,那么您可以获得更高的效率,这会使每个文件匹配一个fork
。 xargs
在这里是更好的选择。所以我会做这样的事情:
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,但由于您在每次调用时只提供一个文件名,因此它是多余的。