首页/系统/Linux 运维命令速查/find 按大小筛选(-size/-empty)
文件与目录76 条

find 按大小筛选(-size/-empty)

-size 按块或单位筛选大小(c/k/M/G),-empty 直接找空文件与空目录;磁盘清理的常用组合。

Linux 运维命令速查系统更新于 2026-10-13

find -size 是什么

find 的 -size 按文件长度筛选,可带单位(c 字节、k KiB、M MiB、G GiB),不带单位时以 512 字节块计。-size 的比较是块级的:内部先换算成块再向上取整,所以 -size 500M 表示「恰好向上取整等于 500MiB」,而清理大文件真正该用的是区间写法 -size +500M。配对选项 -empty 匹配长度为 0 的文件,也匹配不含任何条目的目录,是清理空目录的正确工具(-size 0 只对普通文件成立)。

基本信息

适用平台Linux/BSD/macOS(GNU findutils 与 BSD find 的 -size 语法一致)
命令语法find 路径 -size [+|-]N[ckMGb] ;或 find 路径 -empty
单位含义默认 512 字节块;c 字节 k KiB M MiB G GiB b 512 字节块
组合要点-type f 限定普通文件、-name 过滤后缀、-printf/-exec 处理结果、-delete 作为最后动作
权限说明遍历需要目录的读与执行权限,跨用户目录加 sudo;-delete 同样受权限约束

典型使用场景

  • 磁盘清理:定位大于 500M 的日志、备份、临时包,作为扩容或清理的依据
  • 残留清理:找 0 字节的上传中断文件与空目录,避免同步与打包时带上垃圾
  • 发布核查:检查站点目录里混入的超大媒体文件或误打包的数据库备份
  • 容量归因:按大小阈值筛出候选文件,再交给 du/ls 复核实际占用
  • 自动化巡检:find -size +1G 配合告警,及时发现在线业务目录的大文件堆积

常用示例

常用示例
find /data -type f -size +500M                      # 大于 500MiB 的文件
find /data -type f -size +1G -printf '%s %p\n' | sort -rn | head   # 按大小排序(GNU)
find . -type f -size -10k -name '*.tmp'            # 小于 10KiB 的临时文件
find /var/log -type f -size +100M -exec ls -lh {} + # 交给 ls 输出可读大小
find /var/tmp -type f -empty                        # 0 字节文件
find /srv -type d -empty                            # 不含任何条目的空目录
find /backup -type f -size +2G -delete              # 慎用:直接删除

写法与含义对照

写法含义注意
-size 500M向上取整后恰好等于 500MiB几乎只匹配特定长度,日常很少这样写
-size +500M大于 500MiB清理大文件的主用法
-size -1M小于 1MiB0 字节文件也算在内,配合 -type f 更精确
-empty普通文件长度为 0,或目录无条目对符号链接不成立,符号链接长度是目标路径长度
省略单位按 512 字节块比较写 -size 1024 得到的是 512KiB 而不是 1KiB
-size 判断的是文件长度,不是磁盘占用:稀疏文件、块对齐、压缩文件系统都会让 find -size 与 du 的结果不一致,容量排查建议两个都看。
GNU find 的 -printf '%s %p\n' 直接输出字节数与路径,比 -exec ls -lh {} + 少一次进程创建,百万级文件时差别明显;BSD/macOS 的 find 无 -printf,需退回 -exec。

易错点

  • 默认单位是 512 字节块,想找 1KB 却写 -size 1024,实际条件变成 512KiB,结论会完全跑偏
  • -delete 必须放在表达式最末位,写成 -delete -name '*.log' 会直接报错;先不带 -delete 跑一遍看命中清单
  • -size 只读元数据但要走遍目录,机械盘上百万级 inode 的目录扫描耗时明显,尽量先缩小目录范围
  • 用 -empty 找坏软链无效,符号链接的大小是目标路径字符数,检测坏链要用 -xtype l

数据来源与参考

  • man 1 find(GNU findutils 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌