find是Linux最强大常用的实时文件查找命令,支持按名、类型、大小、时间、权限、内容等条件组合搜索;基础用法包括-name精准/模糊匹配、-type筛选文件类型、-size按大小过滤、-mtime/-atime按时间定位,以及-exec/+批量执行操作。

Linux里找文件,find 是最强大也最常用的命令。它不依赖索引,能实时遍历目录树,支持按名称、类型、大小、时间、权限、内容等多种条件组合查找,掌握核心用法就能解决90%的查找需求。
按文件名精准或模糊查找
最基础也最常用。注意区分大小写,用通配符时要加引号防止被shell提前展开。
-
find /path -name "filename":精确匹配(如
find /home -name "report.txt") -
find /path -iname "readme*":忽略大小写 + 通配(如匹配
README.md、ReadMe.TXT) - find /var/log -name "*.log" -mtime -7:查近7天的log文件,常用于日志清理
按文件类型和大小筛选
避免误删或快速定位大文件、空文件等特殊目标。
-
find /tmp -type f -size +100M:找大于100MB的普通文件(
f=文件,d=目录,l=软链接) -
find /home -empty -type f:找出所有空文件(
-empty对目录也生效,加-type d可查空目录) -
find . -size 0:当前目录下所有大小为0的文件(等价于
-empty,但更直观)
按修改/访问时间高效定位
时间单位是“天”,-mtime 表示修改时间,-atime 是访问时间,-ctime 是状态变更时间(如权限、所有者改变)。
- find /data -mtime -1:1天内修改过的文件(注意:不是“昨天”,而是“过去24小时”)
- find /backup -mtime +30 -name "*.tar.gz":找30天前修改、后缀为tar.gz的备份包
-
find /tmp -amin -5:5分钟内被访问过的文件(
-amin单位是分钟,适合调试或审计)
执行操作:查完直接处理
不用先找再手动操作,用 -exec 或 + 批量处理,安全又高效。
-
find /tmp -name "*.tmp" -exec rm {} \;:逐个删除(
{}代表当前文件,\;结束命令) - find /var/log -name "*.old" -exec mv {} /archive/ \;:移动旧日志
-
find . -name "*.log" -exec ls -lh {} +:批量执行
ls -lh(+比\;更高效,类似 xargs)
find 命令灵活但容易因路径、引号、转义出错。建议从简单条件开始试,加 -print 显式输出结果确认无误后再加 -exec。熟练之后,配合管道和 grep 还能做更复杂的文本级筛选。










