Linux中查找文件主要用find(实时灵活)和locate(快速但需更新数据库);find支持按名、大小、时间、权限等条件精准搜索,locate适合模糊匹配。

Linux 中查找指定目录下的特定文件,主要靠 find 和 locate 两个命令。前者实时、灵活、条件丰富;后者快但依赖数据库,结果可能滞后。
用 find 按名称精准查找
这是最常用、最可靠的方式,支持通配符、大小写控制和路径限制。
- 在 /var/log 下查找所有以 error 开头的日志文件:
find /var/log -name "error*" - 不区分大小写查找当前目录下名为 config.json 的文件:
find . -iname "config.json" - 只查普通文件(排除目录、链接等):
find /home/user -type f -name "*.conf" - 同时满足多个条件,比如查找 /tmp 下大于 5MB 且扩展名为 .log 的文件:
find /tmp -type f -name "*.log" -size +5M
用 locate 快速模糊匹配
适合已知大致文件名、追求速度的场景,但需提前更新数据库。
- 先更新索引(需 sudo 权限):
sudo updatedb - 查找包含 nginx.conf 的所有路径:
locate nginx.conf - 只显示完整匹配(避免出现
my_nginx.conf.bak这类干扰项):locate -b '\nginx.conf'
按其他属性辅助定位
当文件名不确定,但知道大小、时间或权限特征时,这些条件很实用。
- 找最近 24 小时内修改过的 Python 脚本:
find /project -name "*.py" -mtime -1 - 找空文件(大小为 0 字节):
find /data -type f -empty - 找属于用户 www-data 且权限为 644 的配置文件:
find /etc -name "*.cfg" -user www-data -perm 644
小技巧:配合其他命令提升效率
单独 find 很强,加点组合更能解决实际问题。
- 只显示前 10 个结果,防止刷屏:
find /usr -name "*.so" | head -10 - 把结果保存到文件便于后续分析:
find /opt -type d -name "cache" > cache_dirs.txt - 查找后直接查看文件权限和大小:
find . -name "README.md" -ls


















