Linux高手之find 命令使用技巧|从入门到实战精通

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 字节
  • k KB
  • M MB
  • G GB

四、按时间查找(日志 / 备份清理神器)

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 运维必备神器,掌握名称、大小、时间、权限、深度、批量执行等高级用法,可轻松完成文件搜索、日志清理、权限修复、批量处理等工作。熟练使用能大幅提升服务器管理效率,是必须掌握的核心命令。

本文首发于 58Linux技术博客,专注Ubuntu桌面使用、Linux服务器运维与网站搭建实战。

将本页面加入收藏夹

      如果觉得本文对您有用。建议按下 Ctrl+D (Windows) 或 Cmd+D (Mac) 收藏本页,以便在下次需要时快速查阅解决方案。

发表评论

粤ICP备10052831号 | © 2026 58Linux 技术笔记. All Rights Reserved. | 联系我们 | 关于本站
本站内容开放共享,仅供学习交流 | 专注 Ubuntu & Linux 实战教程
Built with GeneratePress