我正在使用 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 的文件名。
第二行给出了出现的次数,第三行给出了文件的总数。
有没有办法更优雅、更快地做到这一点?
我正在使用 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 的文件名。
第二行给出了出现的次数,第三行给出了文件的总数。
有没有办法更优雅、更快地做到这一点?
如果避免 ,您可以获得更高的效率-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,但由于您在每次调用中只提供一个文件名,所以它是多余的。