find 是 Linux 下最强大、最常用的文件查找工具,不仅能按名称查找,还能按时间、大小、权限、深度、类型进行精准搜索,并支持批量执行命令。本文整理 find 高级用法大全,覆盖运维、开发、服务器清理必备场景,Ubuntu / CentOS 通用。
一、按文件名称查找(基础但实用)
1.1 精确查找文件名
find /path -name "filename.txt"
1.2 不区分大小写查找
find /path -iname "filename.txt"
1.3 通配符模糊查找
find /path -name "*.log"
find /path -name "backup*"
find /path -name "*2025*"
1.4 匹配多个后缀
find /path -name "*.log" -o -name "*.tmp" -o -name "*.bak"
二、按文件类型查找
2.1 只查找普通文件
find /path -type f
2.2 只查找目录
find /path -type d
2.3 只查找软链接
find /path -type l
2.4 查找设备 / 管道等
find /path -type b # 块设备
find /path -type c # 字符设备
find /path -type p # 管道
find /path -type s # socket
三、按文件大小查找(清理必备)
3.1 查找大于 100M 的文件
find /path -size +100M
3.2 查找小于 10K 的文件
find /path -size -10k
3.3 精确大小
find /path -size 1M
3.4 单位支持
b块 (512B)c字节kKBMMBGGB
四、按时间查找(日志 / 备份清理神器)
4.1 按修改时间 mtime
find /path -mtime -1 # 1天内修改
find /path -mtime +7 # 7天前修改
find /path -mtime 3 # 正好3天前
4.2 按访问时间 atime
find /path -atime +30
4.3 按状态改变时间 ctime
find /path -ctime -1
4.4 按分钟(高精度)
find /path -mmin -30 # 30分钟内
find /path -mmin +120 # 2小时前
五、按权限与用户查找
5.1 按权限查找
find /path -perm 0644
find /path -perm /777 # 包含任意权限
find /path -perm -200 # 所有者可写
5.2 按所属用户
find /path -user root
find /path -user www-data
5.3 按所属组
find /path -group dev
六、按目录深度限制(避免遍历过深)
6.1 只在当前目录查找(不进入子目录)
find /path -maxdepth 1 -name "*.log"
6.2 限制最大深度 3 层
find /path -maxdepth 3 -name "*.conf"
6.3 最小深度 2 层
find /path -mindepth 2 -name "*.sql"
七、高级条件组合(精准过滤)
7.1 同时满足大小 + 时间
find /path -type f -size +100M -mtime +7
7.2 排除某个目录
find /path -path "/path/skip" -prune -o -name "*.log" -print
7.3 多个目录排除
find /path \( -path "*/proc" -o -path "*/sys" \) -prune -o -name "*.tmp" -print
八、查找后批量执行命令(最强大功能)
8.1 删除查找到的文件
find /path -name "*.tmp" -delete
8.2 删除 7 天前日志(安全)
find /var/log -name "*.log" -mtime +7 -delete
8.3 批量修改权限
find /path -type d -exec chmod 755 {} \;
find /path -type f -exec chmod 644 {} \;
8.4 批量修改所有者
find /path -exec chown www-data:www-data {} \;
8.5 批量打包
find /path -name "*.log" -exec tar -czf logs.tar.gz {} +
8.6 查看文件详情
find /path -name "*.conf" -exec ls -lh {} \;
九、空文件 / 空目录清理
9.1 查找空文件
find /path -type f -empty
9.2 删除空文件
find /path -type f -empty -delete
9.3 查找空目录
find /path -type d -empty
9.4 删除空目录
find /path -type d -empty -delete
十、按 inode 号查找(解决乱码文件)
ls -i # 查看 inode
find /path -inum 123456
十一、查找并显示完整信息
find /path -name "*.tar.gz" -exec ls -lht {} \;
十二、服务器常用实战脚本
12.1 清理系统临时文件
find /tmp -type f -atime +1 -delete
find /var/tmp -type f -mtime +3 -delete
12.2 查找大文件并排序
find / -type f -size +500M | xargs ls -lhS
12.3 查找可疑 777 权限文件
find / -type f -perm 777 2>/dev/null
12.4 批量替换文件内容
find /path -name "*.php" -exec sed -i 's/old/new/g' {} \;
十三、注意事项
find遍历磁盘,高负载服务器建议低峰执行- 慎用
-delete,建议先用-print预览 - 批量操作优先使用
+代替\;,效率更高 - 排除
/proc /sys /dev避免卡死
十四、总结
find 是 Linux 运维必备神器,掌握名称、大小、时间、权限、深度、批量执行等高级用法,可轻松完成文件搜索、日志清理、权限修复、批量处理等工作。熟练使用能大幅提升服务器管理效率,是必须掌握的核心命令。