Answers:
答案取决于locate您使用的版本,但很有可能是mlocate,它updatedb可以避免进行完整磁盘扫描而快速运行:
mlocate是locate / updatedb实现。“ m”代表“合并”:updatedb重复使用现有数据库,以避免重新读取大部分文件系统,这使updateb更快,并且不会浪费太多系统缓存。
(数据库存储每个目录的时间戳记ctime或mtime,以较新的为准。)
与的大多数实现一样updatedb,mlocate也会跳过文件系统和配置为忽略的路径。默认有没有在mlocate的情况下,但分布通常提供一个基本updatedb.conf而忽略网络文件系统,虚拟文件系统等(详见Debian的配置文件例如,这是在Debian中的标准实践,所以GNU的updatedb被类似地配置)。
mtime其直接父对象的。
mlocate在乎ctime,mtime这意味着它只在乎目录条目列表是否相同(没有删除或添加的文件),这意味着它不在乎实际文件本身。那是对的吗 ?
locate不是grep -R。它不读取文件内容。
除了检查修改时间,mlocate也忽略具有大量无趣的或潜在的重复的文件,如在/etc/updatedb.conf指定(在所描述的文件系统的某些子树人updatedb.conf):
updatedb实现也支持配置的排除项。)