Linux中删除非空目录可用rm -r(递归确认)、rm -rf(强制无提示)、rmdir(仅空目录)、find -exec(条件批量)或trash-cli(回收站安全删除)。

如果您需要在Linux系统中删除文件夹,尤其是包含子目录和文件的非空目录,系统默认会拒绝直接删除操作。以下是几种可行的删除方法,包括安全删除与强制删除方式:
一、使用rm命令递归删除目录
该方法通过递归(-r)选项遍历并删除目标目录及其全部内容,是标准且可控的删除方式。执行时会提示确认是否删除每个文件(若未加-f),适合需要审慎操作的场景。
1、打开终端,切换到目标目录所在路径或使用绝对路径定位。
2、输入命令:rm -r 目录名,例如:rm -r myfolder。
3、若系统提示是否删除每个文件,输入 y 确认,或按 Ctrl+C 中断操作。
二、使用rm命令强制递归删除目录
该方式结合 -r(递归)与 -f(强制)选项,跳过所有确认提示,直接删除指定目录及其中所有文件和子目录。操作不可逆,误用可能导致重要数据丢失。
1、确保已准确核对目标目录名称及路径,建议先用 ls -l 目录名 查看内容。
2、输入命令:rm -rf 目录名,例如:rm -rf /tmp/unwanted_dir。
3、命令执行后无任何输出,目录立即被彻底移除。
三、使用rmdir命令删除空目录
rmdir仅适用于完全为空的目录。它不支持递归,也不具备强制功能,但可配合其他命令组合实现条件化删除,安全性较高。
1、检查目标目录是否为空,运行:ls -A 目录名,若无输出则为空目录。
2、输入命令:rmdir 目录名,例如:rmdir empty_folder。
3、若目录非空,命令将报错:rmdir: failed to remove '目录名': Directory not empty。
四、使用find命令配合-exec删除特定目录
该方法通过find定位符合条件的目录,并调用rm -rf执行删除,适用于按名称、时间、权限等条件批量清理,避免手动逐个操作。
1、进入父级目录,或指定搜索起始路径,例如:cd /var/log。
2、执行查找并删除命令:find . -maxdepth 1 -type d -name "temp_*" -exec rm -rf {} \;。
3、上述命令将删除当前目录下所有以 temp_ 开头的子目录,且不提示确认。
五、使用trash-cli工具实现安全删除(需安装)
trash-cli将文件移至回收站而非直接擦除,提供恢复可能,适合替代rm -rf进行日常清理。该工具不属于系统默认组件,需额外安装配置。
1、安装命令(Ubuntu/Debian):sudo apt install trash-cli;(CentOS/RHEL):sudo yum install trash-cli。
2、删除目录命令:trash myfolder,目录将被移入用户主目录下的 ~/.local/share/Trash。
3、查看回收站内容:trash-list;还原文件:trash-restore。










