为什么用 find?
想象下一台运行 3 年的服务器,老板要求清理超过 100MB 的日志文件。如果用图形界面逐个翻找,估计要加班到凌晨... 而用 find 命令只需一行:
find /var/log -name "*.log" -size +100M -delete
基础语法与核心参数
find [搜索路径] [条件] [操作]
搜索路径:默认当前目录(.),支持绝对路径(/)或用户目录(~)
条件:文件名、类型、大小、时间等
操作:打印路径(默认)、删除、执行命令等
按名称与类型搜索
精准定位文件名
# 区分大小写查找passwd文件find / -name "passwd"# 不区分大小写查找JPG文件find ~ -iname "*.JPG"# 正则表达式匹配(注意转义)find /data -regex ".*\.(jpg|png)$"
过滤文件类型
# 找目录find ~ -type d# 找符号链接find /usr/local/bin -type l# 找普通文件find /tmp -type f
⏳ 时间与大小筛选
按修改时间搜索
# 7天前修改的文件(清理旧日志)find /var/log -mtime +7 -delete# 3天内修改的文件find ~/docs -mtime -3# 比某个文件更新的文件find /data -newer /etc/config.txt
按文件大小过滤
# 大于100MB的文件find /data -size +100M# 小于1KB的文件find ~ -size -1k# 精确匹配512字节的文件find /dev -size 512c
权限与所有者查找
按权限查找
# 精确匹配777权限find / -perm 777# 至少有一个用户有执行权限find /bin -perm /u+x
按所有者 / 组查找
# 查找用户yang的文件find /home -user yang# 查找开发组的文件find /data -group developers
高级技巧与实战
🧩 组合条件
# 找大于50MB的PDF,排除备份目录find /data -name "*.pdf" -size +50M -not -path "*backup*"# 目录或7天内修改的文件find . \( -type d -o -mtime -7 \)
执行批量操作
# 批量修改权限find . -type f -name "*.sh" -exec chmod 755 {} \;# 安全删除(先预览)find /tmp -type f -mtime +30 -ok rm {} \;# 配合xargs并行处理find . -type f -print | xargs -n 100 chown yang
速查表
领取专属 10元无门槛券
私享最新 技术干货