find实时精准但慢,locate极速但结果可能过期;find适用于最新结果和复杂条件筛选,locate适合快速模糊查找,二者可组合使用。

Linux 查找文件主要靠 find 和 locate,它们思路不同:find 实时遍历目录树,准确但慢;locate 查数据库快,但结果可能过期。
find:实时、精准、功能强
适合需要最新结果、按权限/大小/时间等条件筛选的场景。基本语法是:
find [搜索路径] [选项] [动作]
- 查当前目录下所有 .log 文件:
find . -name "*.log" - 忽略大小写:
find /var -iname "access.log" - 查最近 7 天修改过的 .conf 文件:
find /etc -name "*.conf" -mtime -7 - 查大于 10MB 的文件:
find /home -size +10M - 找到后直接删除(慎用):
find ./tmp -name "*.tmp" -delete
locate:极速、依赖数据库、结果可能滞后
它不扫描磁盘,而是查 /var/lib/mlocate/mlocate.db 这个预建索引库,所以快得多,但数据库默认只每天更新一次(通过 cron)。
- 查文件名含 “nginx” 的所有路径:
locate nginx - 精确匹配完整文件名:
locate -b '\nginx.conf'(\转义,-b表示匹配 basename) - 更新数据库(需 sudo):
sudo updatedb(改完文件后想立刻搜到,就运行它) - 第一次用 locate 前,通常要先执行一次
sudo updatedb
怎么选?看需求
- 要最新结果、带复杂条件(比如“属主是 www-data 且 2 小时内改过”)→ 用 find
- 只知道文件名片段,想秒出结果,且不介意一两天内的延迟 → 用 locate
- 不确定是否存在,先
locate快速试探,再用find精确验证 → 组合使用很高效
基本上就这些。不用硬记全部参数,掌握几个常用组合,再配合 man find 或 locate --help 查就行。










