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
实现也支持配置的排除项。)