首页/系统/Linux 运维命令速查/rmdir 删除空目录
文件与目录76 条

rmdir 删除空目录

只能删除空目录,天然防呆;批量清理空目录树用 find 与 rmdir 组合,误删风险远小于 rm -r。

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

rmdir 是什么

rmdir 只删除空目录,目录非空时直接报错退出,这层保护正是它存在的理由:在脚本里清理目录时,它不会像 rm -rf 那样把内容一起带走。批量清理空目录通常与 find -type d -empty 组合使用。

基本信息

适用平台Linux / Unix,GNU coreutils 实现
命令语法rmdir [选项] 目录...
常用选项-p 自底向上删除空目录链;--ignore-fail-on-non-empty 非空时不报错;-v 输出处理过程
退出码目录非空或不存在时返回非 0,脚本可据此判断

典型使用场景

  • 清理临时目录:任务结束后删除自己创建的目录,非空会暴露出异常残留
  • 删除空目录链:rmdir -p a/b/c 从最深层向上删,遇到非空目录即停
  • 批量修剪:用 find 找出空目录再删,处理上传与解压产生的残渣
  • 脚本防呆:比 rm -rf 更适合放进自动化流程,误删代价可控
  • 保留占位目录:只含 .gitkeep 的目录不算空,正好避免误删占位结构

常用示例

常用示例
rmdir old-cache                     # 删除空目录,非空则报错退出
rmdir -p a/b/c                      # 自底向上删除空目录链
rmdir -v empty1 empty2              # 打印每个被删除的目录
find /data -type d -empty -print    # 先看清单,再决定是否删除
find /data -type d -empty -delete   # 批量清理(-delete 隐含 -depth)

与相近命令的差别

命令行为风险
rmdir 目录仅删除空目录低,非空即拒
rmdir -p a/b/c自底向上删空目录链中,会连带删除上层空目录
find -type d -empty -delete删除所有匹配的空目录中,范围由起点决定
find ... -delete 命中文件连文件一起删高,与 rmdir 语义完全不同
rm -rf 目录删除目录及全部内容最高,不可恢复
--ignore-fail-on-non-empty 让批量清理跳过非空目录而不报错,适合放进计划任务。
目录中只要有一个隐藏文件(如 .gitkeep、.dockerenv)就不算空,rmdir 会拒绝删除,这通常正是期望行为。
find 的 -delete 隐含 -depth,会先删子项再删目录,与 rmdir 的「非空即拒」完全不同,别把两者当等价操作。

报错信息对照

情形提示信息含义
目录非空Directory not empty保护机制生效,内容还在
目录不存在No such file or directory路径写错或已被删除
上级目录无写权限Permission denied需要提权或换操作目录
目录是挂载点Device or resource busy先 umount 再考虑删除
文件系统只读Read-only file system检查挂载选项或文件系统状态
GNU rm 的 -d 选项语义等同于 rmdir:只删空目录,非空直接报错,已经习惯用 rm 的人可以改用 rm -d。但 rmdir -p 那种自底向上删整条空目录链的能力,rm 没有对应写法,清理多层空壳目录仍以 rmdir -p 或 find 组合为主。

易错点

  • 目录非空时 rmdir 报 Directory not empty 是有意设计的保护,绕过它之前先确认内容是否还需要
  • find -delete 与 rmdir 语义不同:前者连目录内文件一起删,误用等于执行一次 rm -rf
  • find 批量删除时没加 -xdev 会跨越挂载点,可能删掉挂载盘里的空目录
  • 相对路径删除容易误伤,脚本里改用绝对路径并先用 -print 干跑确认命中清单
  • 删挂载点会报 Device or resource busy,先用 mountpoint 或 findmnt 确认该目录是否承载挂载,别把它当成权限问题反复提权重试

数据来源与参考

  • man 1 rmdir(GNU coreutils 手册)

相关工具

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