Shell Command: locate
本网站相关文章:
- 文件-基本操作集
- 文件-过滤
- 文件-find
- 文件-grep
- 文件-locate
- 文件-lsof
- 文件-redirect
- 文件-regex
- 文件-rsync
- 文件-sed
- 文件-tar
- 文件-xargs
说明
- 描述和命令
搜索数据库/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
: 将特定的文件排除在外
- 更新
linux 上使用updatedb
, OSX 上通过/usr/libexec/locate.updatedb
来进行数据库的构建和更新流程, 注意, 命令会扫描全部磁盘下的全部文件(真没想到)然后在数据库中存储文件映射, 这是完全不同于 find 等命令的, 其搜索范围之大, 搜索速度之快远远不是其他命令能比的, 不过有点耗费性能.
安装:
apt install mlocate
例子
1 | # 更新数据库, 另外会每天自动更新 |
find 和 locate
find 命令是到硬盘上逐个扫描获取指定的文件信息, 其是实时的扫描指定目录, 整个过程是非常耗费时间的. locate 则不一样, 其通过每天定时更新并持久化到指定的数据库中, 这样查找效率远远高于 find.
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 狂想写作本!
评论