Linux命令-rmdir(删除空目录)
Linux命令-rmdir删除空目录命令语法常用选项场景化实例1. 基本使用2. 删除多个空目录3. 递归删除父子空目录4. 批量清理空目录5. 清理用户目录空文件夹6. 非空目录的错误处理7. 与 rm 对比8. 系统维护脚本最佳实践快速参考rmdir专门用于删除空目录只能删除不包含文件和子目录的目录。要删除非空目录需使用rm -r。适合清理文件系统中多余的空目录结构。提示rmdir比rm -r更安全因为不会误删有内容的目录。配合-p可递归删除路径上所有空目录。命令语法rmdir[选项]目录名...常用选项选项说明-p递归删除路径上所有空目录-v显示删除详情--ignore-fail-on-non-empty非空目录不报错场景化实例1. 基本使用# 创建并删除空目录mkdir/tmp/test_emptyls-ld/tmp/test_emptyrmdir/tmp/test_emptyls-ld/tmp/test_empty21# ls: cannot access /tmp/test_empty: No such file or directory2. 删除多个空目录mkdir/tmp/dir_a /tmp/dir_b /tmp/dir_crmdir-v/tmp/dir_a /tmp/dir_b /tmp/dir_c# rmdir: removing directory, /tmp/dir_a# rmdir: removing directory, /tmp/dir_b# rmdir: removing directory, /tmp/dir_c3. 递归删除父子空目录# 创建嵌套目录mkdir-p/tmp/deep/nested/path# 注意只有 path 是新建的空目录# -p 会尝试删除 path - nested - deep - /tmp/deeprmdir-pv/tmp/deep/nested/path# 输出哪些被删除了4. 批量清理空目录#!/bin/bash# 查找并删除项目中所有空目录echo扫描空目录中...empty_count0find.-typed-empty-print|whilereaddir;doecho空目录:$dir((empty_count))doneread-p共$empty_count个空目录确认删除(y/n) ansif[$ansy];thenfind.-typed-empty-deleteecho已删除所有空目录fi5. 清理用户目录空文件夹# 清理 home 目录的空文件夹跳过隐藏目录find~-maxdepth4-typed-empty!-path*/.git/*!-path*/node_modules/*2/dev/null# 实际删除find~-maxdepth4-typed-empty!-path*/.git/*-execrmdir{}\;2/dev/null6. 非空目录的错误处理# 非空目录会报错mkdir/tmp/has_filestouch/tmp/has_files/data.txtrmdir/tmp/has_files# rmdir: failed to remove /tmp/has_files: Directory not empty# 忽略非空错误rmdir--ignore-fail-on-non-empty /tmp/has_filesecho退出码:$?# 退出码: 0即使未删除也不报错# 清理rm-r/tmp/has_files7. 与 rm 对比# rmdir: 仅空目录安全mkdiremptyrmdirempty# rm -d: 等同于 rmdirmkdirempty2rm-dempty2# rm -r: 可删除非空目录危险mkdir-ptest/subtouchtest/sub/file.txtrm-rtest# 删除成功但不安全8. 系统维护脚本#!/bin/bash# 系统级空目录清理LOG/var/log/clean_empty_dirs.logecho$(date)开始清理空目录 $LOG# 清理临时目录find/tmp-maxdepth1-typed-empty-mtime1-execrmdir{}\;2$LOG# 清理 /var 空目录跳过关键路径find/var-typed-empty!-path/var/run/*!-path/var/lock/*2/dev/null|\whilereaddir;doecho发现:$dir$LOGdoneecho 清理完成 $LOG最佳实践用find . -type d -empty先扫描再删除生产环境配合--ignore-fail-on-non-empty安全清理。# 安全三步法find.-typed-empty/tmp/empty_dirs.txt# 列出cat/tmp/empty_dirs.txt# 审查xargs-a/tmp/empty_dirs.txtrmdir-v# 删除