11人参与 • 2025-04-24 • Linux
find
是 linux 系统最强大的文件搜索工具,支持 嵌套遍历、条件筛选、执行动作。以下通过场景分类解析核心用法,涵盖高效搜索、文件管理及高级技巧:
<bash>
find /path -name "*.log" # 精确匹配 .log 后缀(区分大小写) find /home -iname "*.txt" # 模糊匹配 .txt 后缀(忽略大小写) find . -name "data_[0-9].csv" # 使用通配符 [] ? * 匹配
find /var/log -path "/var/log/nginx" -prune -o -name "*.log" # 排除 nginx 目录 find . -not -name "*.tmp" # 排除所有 .tmp 文件
使用 -type
筛选文件类型:
f
: 常规文件d
: 目录l
: 符号链接s
: 套接字p
: 命名管道find /opt -type d -name "config" # 搜索名为 config 的目录 find ~/ -type f -empty # 查找当前用户下空文件 find /tmp -type l -ls # 列出 /tmp 下所有符号链接详细信息
按时间筛选(文件修改时间 -mtime
/ 访问时间 -atime
):
+n
: n 天前-n
: 最近 n 天内n
: 正好 n 天前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):
+n
: 大于 n-n
: 小于 nn
: 等于 nfind / -size +100m # 全局搜索大于 100mb 的文件(慎用根目录) find ~/downloads -size -5k # 查找 downloads 中小于 5kb 的文件
find . -perm 644 # 精确匹配权限为 644 的文件 find /etc -perm -u=r # 用户可读的文件(权限包含 r) find /bin -perm /u=s # 包含 suid 的文件
find /var -user www-data # 属于 www-data 用户的文件 find /home -group dev # 属于 dev 组的文件
-a
(-and
): 逻辑与(默认)-o
(-or
) : 逻辑或!
(-not
) : 逻辑非()
分组(需转义)find /data \( -name "*.jpg" -o -name "*.png" \) -size +2m # 查找 jpg 或 png 且大于 2mb find . -type f ! -name "*.tmp" # 排除所有 .tmp 文件
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 必须放在最后)
find /path -type f -size +0c -links 1 -exec ls -i {} \; # 非硬链接的独立文件
find . -type f -exec md5sum {} + | sort | uniq -w32 -dd # 生成校验和对比重复项
find / -perm /4000 -user root 2>/dev/null # suid 且属主为 root find / -perm /2000 -group root 2>/dev/null # sgid 且属组为 root
find / -xdev -type f -perm -0002 ! -perm -1000 # 忽略粘滞位目录下的文件
限定搜索深度:-maxdepth
和 -mindepth
find /var/log -maxdepth 2 -name "*.log" # 仅搜索两层目录
跳过特定文件系统:-xdev
(不跨文件系统)
find / -xdev -name "lost+found" # 仅在当前文件系统搜索
find [路径] [条件] [动作]
,灵活组合条件实现精准搜索。-print
或 -ls
确认目标文件。-xargs
提升性能。到此这篇关于linux find 命令完全指南的文章就介绍到这了,更多相关linux find 命令内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论