做什么
通过预建的索引数据库秒搜文件名——比 find 快几个数量级,但只能按名字找。
sudo apt install plocate # 推荐 plocate(mlocate 升级版)
sudo updatedb # 建索引(首次必须;之后 cron 每日自动)
实战
locate nginx.conf # 找所有叫 nginx.conf 的
locate -i README # 忽略大小写
locate -c "*.iso" # 计数
locate -l 10 ".bashrc" # 限 10 个结果
# 跟 grep 配合细化
locate config | grep nginx
常用参数
| 参数 | 含义 |
|---|---|
-i |
忽略大小写 |
-c |
只数数量 |
-r REGEX |
正则 |
-l N |
限 N 条 |
-e |
只显示真实存在的(索引可能过时) |
索引
sudo updatedb # 手动更新
sudo updatedb --verbose # 看进度
# 看索引大小
ls -lh /var/lib/plocate/plocate.db
索引每日 cron 自动跑——找最近几小时新建的文件可能找不到,那时改用 find。
选择
| 场景 | 用 |
|---|---|
| 知道名字大概,要快 | locate |
| 复杂条件(时间 / 大小 / 权限) | find |
| 新建的文件 | find |
| 海量结果统计 | locate -c |
坑
- 第一次装好要手动
sudo updatedb一次 - 索引老的文件可能已经被删——加
-e过滤已删的 - 一些发行版默认装的是老
mlocate,建议换plocate(更快、更省空间)