做什么

通过预建的索引数据库秒搜文件名——比 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(更快、更省空间)