054 rmdir命令

命令说明

rmdir 用于删除空目录,出于安全设计只能删空目录,非空会报错;需要递归删除空子目录或连带删内容时分别用 -p 与 rm -r。

语法

rmdir [选项]... 目录...

常用参数

参数说明
-p递归删除:删完子目录后若父目录也空了则一并删除
--ignore-fail-on-non-empty目录非空时不报错,静默跳过(脚本友好)
-v显示删除过程,成功/失败都有提示
-f几乎忽略失败:目录不存在或不是目录时也不报错(GNU 扩展)
--parents / -p删除目录及其所有空的祖先目录(递归移除)
-H配合 -p 使用:仅对命令行显式给出的目录移除其空祖先
目录...可同时传多个目录一次删除

使用示例

$ rmdir empty_dir

删除一个空目录

$ rmdir a b c

一次删除多个空目录

$ rmdir -p a/b/c

删 c 后若 b、a 变空则逐级删除

$ rmdir -v test

删除并显示结果提示

$ rmdir --ignore-fail-on-non-empty logs

logs 非空也不报错继续执行

$ mkdir -p x/y/z && rmdir -p x/y/z

成对使用:快速建/拆测试目录

$ find . -type d -empty -delete

批量清理当前树下所有空目录

$ rm -rf notempty

目录非空且确定要删时改用 rm -r

实用技巧

  • rmdir 只能删空目录是特性不是缺陷:防止误删有数据的目录;带内容的目录用 rm -r,但 rm -rf 是不可逆高危命令。
  • 目录里有隐藏文件(如 .gitkeep、.DS_Store)也会导致 rmdir 报“目录非空”,用 ls -A 检查。
  • -p 适合清理自己刚创建的深层目录结构,配合 mkdir -p 对称使用。
  • find -type d -empty -delete 是从里向外自动递归清空目录的利器,比手写循环安全。
  • 删除失败报 Permission denied 时检查对父目录是否有 w 权限(删目录 = 修改父目录条目)。