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 权限(删目录 = 修改父目录条目)。