服务器 > 服务器 > Linux

Linux find 命令完全指南及核心用法

11人参与 2025-04-24 Linux

find 是 linux 系统最强大的文件搜索工具,支持 嵌套遍历、条件筛选、执行动作。以下通过场景分类解析核心用法,涵盖高效搜索、文件管理及高级技巧:

一、基础搜索模式

1. 按文件名搜索(精确/模糊匹配)

<bash>

find /path -name "*.log"       # 精确匹配 .log 后缀(区分大小写)
find /home -iname "*.txt"      # 模糊匹配 .txt 后缀(忽略大小写)
find . -name "data_[0-9].csv"  # 使用通配符 [] ? * 匹配

2. 排除指定目录/文件

find /var/log -path "/var/log/nginx" -prune -o -name "*.log"  # 排除 nginx 目录
find . -not -name "*.tmp"     # 排除所有 .tmp 文件

二、根据文件类型筛选

使用 -type 筛选文件类型:

find /opt -type d -name "config"        # 搜索名为 config 的目录
find ~/ -type f -empty                  # 查找当前用户下空文件
find /tmp -type l -ls                  # 列出 /tmp 下所有符号链接详细信息

三、时间维度搜索

按时间筛选(文件修改时间 -mtime / 访问时间 -atime):

find . -mtime -7           # 查找过去 7 天内修改过的文件
find /var/log -mtime +30 -name "*.log"  # 搜索 30 天前的日志文件

按分钟级精准控制(-mmin):

find /tmp -mmin -10       # 查找过去 10 分钟内修改的文件

四、文件大小搜索

使用 -size (单位:c=字节, k=kb, m=mb, g=gb):

find / -size +100m        # 全局搜索大于 100mb 的文件(慎用根目录)
find ~/downloads -size -5k  # 查找 downloads 中小于 5kb 的文件

五、权限与所有权过滤

1. 按权限位搜索(数字或符号模式)

find . -perm 644           # 精确匹配权限为 644 的文件
find /etc -perm -u=r       # 用户可读的文件(权限包含 r)
find /bin -perm /u=s       # 包含 suid 的文件

2. 按用户/组筛选

find /var -user www-data   # 属于 www-data 用户的文件
find /home -group dev      # 属于 dev 组的文件

六、组合条件与逻辑操作

find /data \( -name "*.jpg" -o -name "*.png" \) -size +2m  # 查找 jpg 或 png 且大于 2mb
find . -type f ! -name "*.tmp"    # 排除所有 .tmp 文件

七、执行后续动作(-exec 与 xargs)

1. 直接执行命令(-exec

find . -name "*.bak" -exec rm -f {} \;       # 删除所有 .bak 文件(确认无误后执行)
find /var/log -type f -mtime +30 -exec gzip {} \;  # 压缩 30 天前的日志文件

2. 结合 xargs 提高效率

find /tmp -name "core.*" -print0 | xargs -0 rm -f  # 安全处理含空格文件名

3. 删除文件(内建动作)

find . -type f -name "*.tmp" -delete        # 直接删除(-delete 必须放在最后)

八、高级搜索场景

1. 查找占用 inode 的小文件

find /path -type f -size +0c -links 1 -exec ls -i {} \;  # 非硬链接的独立文件

2. 查找重复文件(根据 md5)

find . -type f -exec md5sum {} + | sort | uniq -w32 -dd  # 生成校验和对比重复项

九、安全排查技巧

1. 搜索可疑 suid/sgid 文件

find / -perm /4000 -user root 2>/dev/null   # suid 且属主为 root
find / -perm /2000 -group root 2>/dev/null  # sgid 且属组为 root

2. 查找全局可写文件

find / -xdev -type f -perm -0002 ! -perm -1000  # 忽略粘滞位目录下的文件

十、性能优化建议

限定搜索深度:-maxdepth 和 -mindepth

find /var/log -maxdepth 2 -name "*.log"   # 仅搜索两层目录

跳过特定文件系统-xdev(不跨文件系统)

find / -xdev -name "lost+found"          # 仅在当前文件系统搜索

总结

到此这篇关于linux find 命令完全指南的文章就介绍到这了,更多相关linux find 命令内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

Linux sort 命令快速上手指南

04-24

shell批量设置key过期时间的两种方法步骤

04-24

Linux文件名修改方法大全

04-24

Linux文件压缩tar的常见用法

04-24

Shell脚本实现服务器多台免密登录操作

04-24

利用Xshell进行文件传输的方法

04-24

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论