根据我的理解,以下两个命令大致完成了同样的事情:
命令 1:
find -name "filename.xml" -exec grep someString {} \;
Run Code Online (Sandbox Code Playgroud)
命令 2:
grep -r --include=filename.xml someString .
Run Code Online (Sandbox Code Playgroud)
尽管如此,当在相同的上下文中预热后对它们计时时,第一个比第二个快大约 3 倍(大约 4 秒对 12 秒)。
我测试的文件夹树中匹配文件名模式的文件数量非常少,而且每个文件都非常小。这让我觉得大部分时间都花在查找与文件名模式匹配的文件上,而不是花在这些匹配文件的 grepping 上。
那么为什么这两个命令行的性能会有如此大的差异呢?