Answers:
这很大程度上取决于您的搜索条件。
如果搜索文件名或文件名模式,则定位会更快,但不适用于新生成的文件,因为通常每天仅使用一次更新索引。但是,如果您可以使用它,它将非常快。
但是使用find可以搜索文件大小,文件年龄和其他内容,而locate无法搜索这些文件。
如果你知道哪里进行搜索,您可以使用路径来划定搜索范围:
find /some/path -size -10M -size +2M -mtime -365 ...
只会在/ some / path中搜索2到10 M,最长1年的文件。
路径中可用的程序可以通过whereis搜索其中的帮助文件,lib文件和配置文件。例子:
which java
/usr/bin/java
whereis firefox
firefox: /usr/bin/firefox /etc/firefox /usr/lib/firefox /usr/share/firefox /usr/share/man/man1/firefox.1.gz
采用 locate
原因是locate
使用一个已经存在的所有现有目录和文件的数据库,就像您想象的那样!
http://linux.about.com/od/commands/l/blcmdl5_locatedb.htm
以一定的设置(和可更改的时间间隔),作业运行会扫描文件系统,然后使用该文件系统构建数据库。然后是该数据库(该数据库及其定位的适当索引)所针对的locate
命令,而不是此时扫描您的硬盘驱动器。
因此,好处是与硬盘驱动器扫描相比,它非常快。不利的一面是,定位数据库(locatedb)不是“活动的”,因此只能用于上次扫描“存在”的文件。
现在运行更新b updatedb
(运行,sudo updatedb
如果需要的话)
顺便说一句,我只是在sudo updatedb
本地跑步,花了3 1/2秒!我有31,000个文件。