Linux 中的 locate 和 find 命令有什么区别

在 Linux 上定位文件的两个流行命令是 find 和 locate 。
根据文件系统的大小和搜索深度, find 命令有时可能需要很长时间才能扫描所有数据。
例如,如果我们在整个文件系统中搜索名为 data.txt 的文件:

# find / -name data.txt

更有可能的是,这将需要几分钟的时间,如果不是更长的话。
一个更快的方法是使用 locate 命令:

# locate data.txt

但是,这种效率是有代价的,locate 输出中报告的数据不如 find 命令报告的数据新鲜。
默认情况下,系统会运行 updatedb,它每天对系统文件进行一次快照,locate 使用此快照快速报告哪些文件在哪里。
但是,最近的文件添加或者删除(24 小时内)不会记录在快照中并且无法定位。

find 命令有许多选项并且是非常可配置的。
有很多方法可以减少搜索的深度和广度并提高搜索效率。

locate 使用以前构建的数据库,如果数据库未更新,则 locate 命令将不会显示输出。
要同步数据库,必须执行 updatedb 命令。

# updatedb
日期:2020-09-17 00:13:02 来源:oir作者:oir