rmdir是GNU Core Utilities预装命令,仅删除空目录,失败即报错,提供安全防护;支持-p递归删空目录链,但要求路径中每个目录均为空且有写权限。
不需要安装 —— 它是 GNU Core Utilities 的一部分,所有主流 Linux 发行版(Ubuntu、CentOS、Debian、Arch 等)默认自带。
如果你执行
报“command not found”,那基本不是缺失
,而是 PATH 异常或系统严重损坏,此时不应优先考虑“安装
”,而应检查 shell 环境或重装基础包(如
)。
只能删空目录,但为什么还值得用?
它不递归、不强制、不静默,失败即报错:
这种“拒绝执行”本身就是安全机制 —— 防止脚本误删非空目录。
适合写入自动化流程中做“断言式清理”:比如确认某临时目录已被清空后才继续下一步。
比
更轻量,无副作用风险(不碰文件、不走递归遍历、不触发 inode 删除逻辑)。
递归删除空目录链,但容易踩坑
实际执行顺序是:先删
,再删
(仅当
此时为空),最后删
(仅当
此时为空)。
常见误操作:
当前工作目录在
或
内,
会失败(Linux 不允许删除当前所在目录)
下除了
还有其他子项(如
),则
不会被删,但
可能已删掉,导致目录结构残缺
权限不足:对任一父目录缺少写权限,整个链式删除中断
如何批量删当前目录下所有空子目录?
直接用
+
最可靠:
Docker Desktop(linux)
当前 Docker 最新稳定版本之一,主要针对稳定性和兼容性进行了修复优化,适合生产环境与日常开发使用。该版本继续强化 AI 开发支持、容器日志管理以及 Docker Engine 的安全能力,对 Windows/macOS/Linux 平台兼容性进行了进一步优化。
下载
避免匹配当前目录(
)
确保只选真正空的目录
逐个调用,失败不影响其余
不要用
替代
:因为
不支持一次传多个路径(它只接受单目录或明确列出的多个空目录)
如果想静默跳过失败(比如某些目录被其他进程占用),加
:
的价值不在“能删多少”,而在“拒绝删不该删的”。一旦你开始思考“怎么让
删非空目录”,说明你真正需要的其实是
或更精细的清理策略 —— 而不是给
打补丁。
rmdirrmdir --versionrmdirrmdircoreutilsrmdirrmdir: failed to remove 'mydir': Directory not emptyrm -rrmdir -prmdir -p a/b/ccbbaaa/ba/b/crmdir -paba/readme.txtab/cfindrmdirfind . -mindepth 1 -type d -empty -exec rmdir -v {} \;-mindepth 1.-empty-exec rmdir -v {} \;+\;rmdir--ignore-fail-on-non-emptyfind . -mindepth 1 -type d -empty -exec rmdir --ignore-fail-on-non-empty -v {} \;rmdirrmdirrm -rrmdir