rmdir 是一个在 Linux、Unix、macOS 以及 Windows 的命令行(如 PowerShell 和 CMD)中都存在的命令,其核心功能是 删除空目录。

核心功能:删除空目录
rmdir 的名字就揭示了它的本质:rm (remove) + dir (directory),即“移除目录”。
最重要的一点:rmdir 只能删除完全为空的目录。 如果目录中包含任何文件或子目录,rmdir 命令将会失败,并提示 Directory not empty (目录非空)。
基本语法
rmdir [选项]... 目录名...
[选项]...:可选的命令行选项,用于控制命令的行为。目录名...:一个或多个你想要删除的空目录的路径,可以一次删除多个。
常用选项
| 选项 | 长选项 | 描述 |
|---|---|---|
-p |
--parents |
递归删除,不仅删除指定的目录,还会删除其所有上级空目录。 |
-v |
--verbose |
显示详细信息,在执行删除操作时,打印出被删除的目录名称。 |
--help |
显示帮助信息并退出。 | |
--version |
显示版本信息并退出。 |
使用示例
假设我们有如下的目录结构:
.
└── my_project/
├── src/
│ └── main.c
├── docs/
│ └── README.md
└── logs/
示例 1:删除一个空目录
logs 目录是空的,我们可以用 rmdir 删除它。

# 尝试删除 logs 目录
$ rmdir logs
# 检查目录结构,发现 logs 目录已被成功删除
$ tree
.
└── my_project/
├── src/
│ └── main.c
└── docs/
└── README.md
示例 2:尝试删除一个非空目录(失败)
如果我们尝试删除 src 目录,它会失败,因为 src 目录里有 main.c 文件。
$ rmdir src rmdir: failed to remove 'src': Directory not empty # 提示 "目录非空",删除失败
示例 3:使用 -p 选项递归删除空目录
我们手动创建一个嵌套的空目录结构来演示 -p 选项。
# 创建一个嵌套的空目录结构 $ mkdir -p parent/child/grandchild # 使用 -p 选项一次性删除整个链路 $ rmdir -p parent/child/grandchild # 检查,发现从 grandchild 到 parent 的所有空目录都被删除了 $ ls -l # parent 目录已经不存在了
rmdir -p parent/child/grandchild 会尝试按顺序删除 grandchild -> child -> parent,只要中间某一级不是空的,整个操作就会停止。
示例 4:使用 -v 选项显示详细信息
# 创建一个空目录 temp_dir $ mkdir temp_dir # 使用 -v 选项删除,会显示删除的动作 $ rmdir -v temp_dir rmdir: removing directory, 'temp_dir'
示例 5:一次删除多个空目录
# 创建几个空目录 $ mkdir dir1 dir2 dir3 # 一次性删除它们 $ rmdir dir1 dir2 dir3 # 检查,发现这些目录都消失了 $ ls dir1 ls: cannot access 'dir1': No such file or directory
rmdir vs rm -r:一个重要的区别
rmdir 的功能非常有限,因为它只能删除空目录,在实际工作中,我们更常用 rm 命令来删除目录。

| 命令 | 功能 | 危险性 |
|---|---|---|
rmdir dir |
仅当 dir 为空时,才能删除 dir。 |
低,无法误删非空目录。 |
rm -r dir |
递归删除 dir 目录及其内部所有文件和子目录。 |
极高,如果误用,可能会造成不可逆的数据丢失。 |
rm -r 的一个重要提示:
在 Linux 和 macOS 中,rm 命令默认没有“回收站”,一旦删除,数据就很难恢复。
在使用 rm -r 之前,强烈建议先使用 ls 或 tree 命令确认一下你要删除的目录内容是否正确。
# 安全的删除流程 # 1. 先查看要删除的目录内容 $ ls -R my_project/ # ... 确认内容无误 ... # 2. 执行删除 $ rm -r my_project/
| 特性 | rmdir |
rm -r |
|---|---|---|
| 主要用途 | 删除空目录 | 删除文件或任何目录(空或非空) |
| 安全性 | 高,无法误删非空目录内容。 | 低,非常危险,容易误删大量数据。 |
| 使用场景 | 脚本中确保只删除已确认的空目录;手动清理一些已确认无用的空文件夹。 | 删除整个项目、临时文件、日志等绝大多数目录删除场景。 |
| 核心思想 | 安全但功能受限 | 功能强大但需要非常小心 |
- 当你100%确定一个目录是空的,并且只想删除它时,可以使用
rmdir,它更安全。 - 在绝大多数情况下,你都需要删除可能包含文件的目录,这时你应该使用
rm -r(或更安全的rm -rf,但-f选项要慎用),请务必在使用rm -r之前,通过ls等命令进行确认。
