跳至主要内容
五折优惠 全部方案,限时优惠。起价 $2.48/mo
12 min left
服务器与系统

如何在 Linux 中安全删除目录:rmdir、rm -r、find

Nick Silver By Nick Silver 12 min read 已更新 Sep 22, 2025
A lone ultrareal laptop at 3/4 angle on a wet surface; screen shows two crisp terminal lines: ls -ld -- '$DIR' rm -I -r -- '$DIR' From the right-side port, a cyan/magenta holographic ribbon curves out to a manila folder floating to the right of the laptop; the folder’s right half frays into fine paper dust mid-air. BR2049 lighting, UV rim, subtle rain specks, sodium-amber haze + single low skyline only.

选对工具,在 Linux 中删除文件夹就像轻而易举一样简单。使用 rmdir 用于空路径, rm -r 用于包含内容的目录,以及 查找 当你只想清空内部内容时。这就是 如何在 Linux 中删除目录的全部内容,配有安全的默认设置、快速检查和错误修复。如果你追求速度,可以先看快速参考表,然后继续阅读完整的安全说明。

 

 

命令概览:复制、粘贴、继续

在深入讲解之前,这里汇总了高频操作。从中间列复制,然后按照说明应用。

任务 最安全的快速命令 额外选项或说明
删除空目录 删除目录 DIR or rm -d DIR 添加 -p 删除父目录(如果它们变成空的)。
删除非空目录,首次提示确认 rm -I -r DIR 兼顾速度和安全。
强制删除非空目录 rm -rf — DIR 验证方式 ls -ld — DIR 运行前请确认。
保留父目录,清空内容 find DIR -mindepth 1 -delete 处理隐藏文件和文件夹。
仅删除空目录 查找 DIR -type d -empty -delete 部署后的清理工作。
按名称模式删除 find DIR -type d -name 'cache*' -prune -exec rm -rf {} + 在大型目录树上运行速度很快。

在处理如何删除 Linux 中的目录时,把这个快照放在手边。 

删除空目录用 rmdir or rm -d

Ultrareal steel file-cabinet drawer pulled fully open, rails and felt pads visible, absolutely empty. Tiny embossed stickers on the front: RMDIR and EMPTY. A soft sodium-amber haze drifts behind a faint skyline silhouette; cyan signage glints along the brushed metal lip; micromotes and hairline scratches read true.

空目录 风险最低。如果只需要删除一个叶节点, rmdir 正好能做到;如果你倾向于保持在 rm,使用 rm -d 会得到相同的结果。两个命令都会在 非空路径处停止,这给初学者在学习如何在终端中删除目录时提供了一个有用的保障。

  • rmdir PROJECT/tmp 删除空文件夹,如果文件夹不存在则无提示返回。
  • rmdir -p foo/bar/baz 删除路径及其所有空的父目录,一次性清理搭建过程中的临时文件。
  • rm -d empty_folder 仅在目录为空时删除,对应的命令是 rmdir 为那些长期依赖 rm.
  • rmdir --ignore-fail-on-non-empty DIR 在脚本中隐藏"非空"错误提示,避免无关信息的干扰。
  • 添加 -v 例如,获取反馈 rmdir -pv foo/bar/baz.

在 Linux 中删除目录时的常见问题是,如果文件夹中仍有文件, rmdir 拒绝运行。这时候你就该用递归了。 

推荐阅读: 使用 XRDP 连接到 Linux 服务器

用以下命令删除非空目录 rm

Ultrareal industrial paper shredder as the single hero; mouth loaded with multiple manila folders and dividers. The folders are clearly stuffed with paper. A tiny metal badge on the front reads RM -R; a small hazard triangle beside it reads FORCE.

递归删除正在进行 rm -r or rm -rf。基本上就是速度和提示词的取舍。学习如何在 Linux 中删除非空目录的开发者通常从 rm -r 然后添加提示词。使用自动化的团队可以 -f 在他们锁定路径检查后。

从让你安心的方案开始:

  • 一次性提示 rm -I -r DIR 在下降前询问一次,比起以下方案更合适 -i 在大树上。
  • 万能提示词: rm -ri DIR 速度较慢,但在处理小型数据树时很有用,能让你看清每一步。
  • 强制递归: rm -rf DIR 跳过提示和大部分错误;请通过以下方式验证 pwd, ls -ld — DIR,以及一个 echo "$DIR" 在你按下 Enter 之前。
  • 详细模式: -v 打印每个删除的路径,例如 rm -rfv build/.
  • Root 和挂载保护:现代系统会阻止 rm -rf / 通过 –preserve-root在脚本中添加 --one-file-system 这样你就不会跨越挂载点。

在繁忙的机器上强制删除前,花半分钟验证一下目标。用以下命令打印它 ls -ld — "$DIR",然后查看引用和通配符。在 Linux 中学习如何删除目录的最佳方式是亲自尝试 -I 先手动执行一次,然后以非交互方式重复。稳定的检查,可重复的工作流。

linux-vps 更省心的 Linux 主机

想用更好的方式托管网站和 Web 应用?在开发新东西?或者只是不喜欢 Windows?这就是我们做 Linux VPS 的原因。

获取你的 Linux VPS

奇怪的名称、开头的破折号和隐藏陷阱

A stretch of caution tape pulled taut across frame, ultrareal vinyl texture with subtle wrinkles. Black print repeats -TMP at intervals after each CAUTION.

某些路径以破折号开头或包含会干扰解析的字节。请传递 停止选项解析,或添加 ./ 在名称前面。

安全的方式来定向非主流名称:

rm -r -- --weird
rm -r ./-cache

这些小技巧让你在 Linux 上删除目录时,对共享服务器和远程会话的压力大大降低。如果你需要保留父目录但删除其中的内容,可以切换到深度感知命令。我们的《Linux 目录删除指南》接下来会讲到这个。

保留文件夹,清空其中的内容

Ultrareal manila folder with a small bottom trapdoor built into the tab-side corner, hinged and slightly open so a faint stream of holographic “file shards” falls away. Etched on the tab: FIND and MIND1 (for -mindepth 1)

很多工作需要一个干净的目录,而不是缺失的目录。日志轮转、构建管道、VPS 维护工作。两种模式涵盖了如何在 Linux 中删除目录内的所有文件,同时保留父目录的方法。

  • 跳过父级 查找:
find /var/tmp/app -mindepth 1 -delete
  • 或执行 rm 按批次:
find ./cache -mindepth 1 -exec rm -rf {} +

两者都能处理隐藏条目(包括点文件),这正是简单的 rm * 漏掉了。如果你想知道怎样删除 Linux 中目录里的所有文件,这是靠谱的办法。

一行命令很方便,但很多团队需要按名称或深度筛选。这就是 查找 让你清楚知道自己能做什么,无需瞎猜。

推荐阅读: 列出 Linux 上正在运行的服务

精准删除功能 查找:名称、深度、修剪

你可能只想清除缓存树、只想清除顶级构建文件夹,或只想清除归档日志。以下是一套精简的匹配模式 查找并删除目录 工作

任务 命令快照 笔记
仅删除 cache*/ 项目下的目录 find . -type d -name 'cache*' -prune -exec rm -rf {} + -prune 跳过匹配项,在大型目录树中更快。
按深度删除目录 find ./dist -mindepth 1 -maxdepth 1 -type d -exec rm -rf {} + 仅针对下一级子目录 dist/.
仅删除空目录 查找 . -type d -empty -delete 部署后的清理工作。
删除匹配模式的文件 find logs -type f -name '*.gz' -delete 保留新的日志文件。
删除全部但保留父目录 find /data/tmp -mindepth 1 -delete 服务继续使用父目录。

使用 -print 先做一次演练,再正式执行。这是在 Linux 上删除目录的实际做法,范围可控、执行迅速。Gotcha,在某些最小化 BusyBox 构建上 -delete 操作缺失;使用 -exec rm -rf {} + 反而。

这些模式能覆盖大多数场景。加上几个保护措施,防止那些罕见但代价巨大的错误。

保护措施,防止误操作

An ultrareal lockout/tagout padlock + hasp assembly as the lone hero, brushed steel and scuffed red enamel, bead of condensation on the shackle; a fiber safety tag hangs from the hasp with three bold engravings: RM -I, ONE FS, PRESERVE ROOT.

强大的命令需要谨慎的默认设置。培养这些习惯,这样在 Linux 上用命令删除目录就不会也删除你的理智。

  • 优选单条提示加 rm -I -r DIR 一边在屏幕上验证路径。
  • 每次都给路径加引号: rm -rf — "$DIR" 防止空格、通配符和以破折号开头的文件名出现问题。
  • 确认确切目标: ls -ld — "$DIR" 输出一行,显示权限、所有者和路径。
  • 保持在文件系统内 rm -rf –one-file-system "$DIR" 防止跨入挂载卷。
  • 根保护保持开启,继续 –preserve-root 在原地
  • 需要时清除不可变位: lsattr -d "$DIR" 检查, chattr -i "$DIR" 去除它。

如果删除仍然失败或卡住,请按常见原因排查。

在 Cloudzy 的 Linux VPS 上运行你的清理测试,然后继续构建

Ultrareal 1U rack server sits firmly on a cloud (cloud = VPS). A short SFP+ fiber patch links the server to an open laptop at 3/4 angle. On the laptop’s glassy terminal, two big stacked engravings: RM -I -R and ROLLBACK (toggle dot lit). On the rack face, small badges: NVME, 10 GBPS, DDR5.

如果你需要一个稳定的远程服务器来尝试 rm, rmdir以及 查找 安全地、快速启动 Linux VPS 主机 并在干净的 shell 中工作。它价格实惠、速度快,可用于 13 个节点11 个 Linux 发行版 开箱即用。你会获得 根目录访问权限, NVMe SSD 存储,以及 DDR5 RAM 在现代方案中,加上 DDoS 防护 和一个 99.95% 正常运行时间 承诺。高带宽和低延迟是标准配置,连接速度可达 10 Gbps 列于方案卡上。

  • 全球覆盖:在超过 12 个位置部署,包括纽约、洛杉矶、迈阿密、阿姆斯特丹、伦敦、德国、瑞士、犹他州、达拉斯、拉斯维加斯和新加坡,为你的用户提供更快的路由。
  • 根访问权限 + 11 个发行版:选择你想要的 Linux 并从第一天起保持完全控制。
  • 现代硬件:NVMe SSD 存储和 DDR5 RAM 为实例提供动力;在高负载 I/O 期间性能保持锐利。
  • 网络 + 正常运行时间:低延迟连接、高带宽和 99.95% 的正常运行时间目标帮助定时作业按时运行。
  • 安全:DDoS 保护跨所有服务器包含,因此日常维护中断的可能性较小。
  • 便利:预装操作系统选项、免费 IPv6 和多种支付方式让设置简单直接。

偏好完整桌面?结账时选择 Linux RDP 一键应用。它提供带有 Linux VPS 的 XRDP, GDM3I notice the text ", and the" is incomplete and appears to be a fragment. Could you provide the full sentence or phrase that needs translation? This will help me give you an accurate translation. GNOME GUI 预装在 Ubuntu,所以你可以一键远程连接。它在相同的 12 个位置运行,并保持 99.95% 正常运行时间 目标。有 无额外费用 用于预装的 RDP 配置。

简单来说,启动一个平价的 Linux VPS,选择你的发行版,保留 root 权限,购买时如果需要可以添加 Linux RDP 桌面环境。然后交互式地练习删除操作、创建快照,反复操作直到这些命令对你来说变得很自然。

故障排除:"权限被拒绝"、"目录非空"、繁忙路径

A single ultrareal folder perched over a narrow chute (this chute symbolizes troubleshooting, so engrave it with a troubleshooting icon); inside it, smaller sub-folders and faint .dotfiles icons fade as they drop. Lip engravings top-to-bottom on the chute: SYMPTOM, CHECK, FIX; opposite side: NOT EMPTY, LOOK, FIND -DELETE.

大多数故障都归结为几种常见情况。使用「症状→检查→修复」这个流程,确保在 Linux 中删除目录不会导致部署停滞。

1)"权限被拒绝"错误,针对你拥有的目录
用以下命令检查属性 lsattr -d DIR。如果设置了不可变标志 i 用以下命令移除它 sudo chattr -i DIR,然后重试。这在加固系统和某些容器中很常见。

2)即使使用了也显示"操作不允许" sudo
确认挂载点不是只读的。 mount | grep DIR or findmnt DIR 会显示状态。为该操作重新挂载为读写,或选择另一个路径。

3)执行后仍然显示"目录非空" rmdir
还有文件存在。改用:

find DIR -mindepth 1 -delete

这个命令会包括隐藏文件和嵌套内容。

4)服务自动重建了这个文件夹
一个正在运行的服务正在写入这个路径。先停止或正常重启服务,然后删除。如果环境本身有问题,参考 systemctl 命令未找到 的指南先修复这个问题。例如,我们遇到过 Nginx 在测试环境中写入 /var/log/nginx/ ;停止 nginx.service 清空 lsof后,删除成功,日志也正常继续记录。

5)"设备或资源繁忙"
某个进程持有目录下的打开文件句柄。 lsof +D 目录 or fuser -vm 目录 显示活跃的连接;清理关闭后再删除。需要快速查看socket再清理日志时, Linux Netstat 命令 这一部分很有帮助。

6) 特殊名称:包含空格、换行或以破折号开头
使用 or ./ 在以破折号开头的名称前加引号,并为每个字符串加引号。要批量清理这些奇怪的名称,运行 find . -print0 | xargs -0 这样空格就不会破坏命令。

经过这些修复,大多数问题都解决了。如果不需要永久删除,可以改用回收站流程。

使用回收站而不是直接删除: trash-cli 以及 垃圾回收站

Ultrareal blue desktop recycling bin (matte polymer with tiny injection marks, slot opening), a folded paper folder edge peeking at the slot. Etched along the lip: TRASH-CLI, TRASH. A small side badge glows RESTORE to suggest reversal.

不是所有东西都需要永久删除。支持 GLib 的桌面环境和服务器都有回收站流程,可以先检查再恢复。如果你在学习如何删除 Linux 中的目录并想要保险的做法,试试这些:

  • gio 垃圾箱 PATH 将文件和目录移到回收站; gio list trash:// 让你浏览内容。
  • trash-cli,使用 删除 PATH, trash-list, trash-restore以及 trash-empty 适合简单的命令行工作流。

比...慢 rm虽然需要额外检查,但如果你想多一道安全措施,这个折衷是值得的。所以,如果你需要学会在 Linux 中删除目录而不冒险损坏真实数据,先用回收站,再升级到 rm.

最后的想法

现在你有了完整的 Linux 目录删除工具集,包括 rmdir 用于空路径, rm -I -r 用于安全递归, rm -rf 仅在验证目标后使用,以及 find -mindepth 1 -delete 在需要清空内容但保留父目录时使用。记得给路径加引号,保持 –preserve-root,停留在同一文件系统,如果不可变属性阻挡你就移除它;故障排除检查会处理其他问题。

别忘了,如果你需要一台干净的远程机器来练习,可以启动一个 Cloudzy Linux VPS 服务器;价格实惠,性能稳定,很适合安全测试,而且我们提供 一键 Linux RDP 你还可以获得桌面会话,在完整的图形界面中逐步执行删除操作。

 

常见问题

rm 和 rmdir 有什么区别?

rmdir 仅删除空目录,使用 -p 选项可删除随之变空的父目录。rm 删除文件和目录,加上 -r 选项进行递归删除,加上 -I 或 -i 选项获得删除提示。

如何强制删除一个文件夹及其中的所有内容?

验证路径后运行 rm -rf — DIR。添加 -v 参数可以看到逐行日志。有些管理员会先用 rm -I -r 做一次演练,确认无误后再执行最终删除。

如何删除目录内的文件,而不删除目录本身?

运行 find DIR -mindepth 1 -delete。这条命令可以清空 Linux 目录中的所有文件,同时保留父目录供服务使用。

为什么 rmdir 会提示「Directory not empty」,而我看不到任何文件?

隐藏文件仍然存在。使用 ls -A 可以看到它们,然后用 find -mindepth 1 -delete 模式删除。

我如何修复「Operation not permitted」或「Permission denied」?

用 lsattr -d DIR 检查不可变位,如果存在则用 sudo chattr -i DIR 删除。同时确认挂载点不是只读的。如果某个服务在清理过程中重新创建路径,先修复 unit 问题。上面链接的 systemctl 部分会有帮助。

Share

博客更多内容

继续阅读。

准备好部署了吗? 起价 $2.48/月。

独立云厂商,自 2008 年起。AMD EPYC、NVMe、40 Gbps。14 天退款保证。