“whereis”如何如此快速地找到文件?

“whereis”如何如此快速地找到文件?

我最近试图找到一个具有特定名称的二进制文件。我决定使用whereis搜索实用程序(util-linux 包的一部分)。与尝试使用类似命令相比,这可以用一半的时间找到文件find

我还使用了该locate命令,该命令产生的速度类似于whereis.

find命令相比,这些命令如何能够如此快速地查找文件?

答案1

find盲目地遍历整个文件系统来寻找匹配项。它需要很长时间,因为它正在查看每个目录中的每个文件,直到覆盖整个文件系统才停止。

locateupdatedb还涵盖整个文件系统,但它通过使用预构建的数据库(使用命令更新)来查找匹配文件来 加快速度。

whereis并且which还通过目录搜索来查找文件,但它们仅搜索文件系统中非常特定的位置子集(通常由环境变量指定,$PATH$MANPATH适当)。它们还可以阻止第一次发生,从而加快运行时间。

相关内容