1

我正在使用 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 的文件名。

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

有没有办法更优雅、更快地做到这一点?

4

1 回答 1

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,但由于您在每次调用中只提供一个文件名,所以它是多余的。

于 2012-08-30T15:49:28.280 回答