在Linux中“ locate”和“ find”有什么区别?


Answers:


38

find在真实系统中搜索。速度较慢,但​​始终是最新的,并且具有更多选项(大小,修改时间等)

locate使用以前建立的数据库(命令updatedb)。速度更快,但是使用“旧”数据库并仅搜索名称或其中的一部分。

在任何情况下,man find并且man locate将进一步帮助你。


1
...和updatedb做大致成才喜欢find / -type f | gzip > locate.gz
F. Hauri 2013年


3

无论是locatefind命令,会发现一个文件,但他们完全不同的方式工作。

locate 将在离线模式下工作:

  • 为了简单说明,Unix系统中名为slocate的文件索引数据库将列出Unix系统附带的所有文件的位置。执行时locate,它将使用该数据库搜索特定文件。问题locate在于,如果您刚刚创建了一个现在要搜索的文件,则定位将不起作用,因为slocate数据库不是最新的。为解决此问题,您可以使用updatedb来更新slocate数据库。locate现在再次执行将找到新创建的文件。因此,很多Linux系统管理员使用cron的工作定期更新的slocate数据库。

find 将以在线/“实时”模式工作。

  • 实际上,它将搜索所有目录以找到指定的特定文件,并逐个检查每个文件。因此,它需要大量的I / O调用。

因此,根据性质,很明显,定位比查找要快,但是查找是实时的。

希望这将有助于清除这个想法。祝一切顺利。:)


0

locate 简单地查看其数据库并报告文件位置。

find 不使用数据库,而是遍历所有目录及其子目录,并查找与给定条件匹配的文件。


0

查找命令的替代方法是locate命令。该命令通常更快,并且可以轻松搜索整个文件系统。您可以使用apt-get安装命令:

sudo apt-get update
sudo apt-get install mlocate

查找比查找更快的原因是因为它依赖于文件系统上文件的数据库。通常每天使用cron脚本更新一次数据库,但是您可以通过键入以下内容进行手动更新:

sudo updatedb

立即运行此命令。请记住,如果要查找最近获取或创建的文件,则数据库必须始终是最新的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.