本网站相关文章:

说明

  1. 描述和命令
    搜索数据库/var/lib/locatedb, mac上/var/db/locate.database, 类似”find -name”, 但是速度快于后者, 不过 locate 并非实时查询, locate 的查询为模糊查询, 查询需要依托已经建立的数据库或索引, 而索引的建立需要耗用系统资源.
  • -d [DB]:指定 DB 数据库, 默认为 /var/lib/slocate/slocate.db
  • -i: 忽略大小写
  • -1: 安全模式, 使用者不会看到权限无法看到的文件信息
  • -n: 至多 N 个输出
  • -r: 模糊查找 + 正则查找
  • -f: 将特定的文件排除在外
  1. 更新

linux 上使用updatedb, OSX 上通过/usr/libexec/locate.updatedb来进行数据库的构建和更新流程, 注意, 命令会扫描全部磁盘下的全部文件(真没想到)然后在数据库中存储文件映射, 这是完全不同于 find 等命令的, 其搜索范围之大, 搜索速度之快远远不是其他命令能比的, 不过有点耗费性能.

  1. 安装: apt install mlocate

  2. 例子

1
2
3
4
# 更新数据库, 另外会每天自动更新
updatedb
# 查找某一个文件
locate /usr/bin/ls

find 和 locate

find 命令是到硬盘上逐个扫描获取指定的文件信息, 其是实时的扫描指定目录, 整个过程是非常耗费时间的. locate 则不一样, 其通过每天定时更新并持久化到指定的数据库中, 这样查找效率远远高于 find.