如何删除目录及其所有内容?


141

我只知道bash

rmdir directoryname

仅在目录为空时将删除目录。有没有办法强制删除子目录?

Answers:


215

以下命令将为您完成此操作。但是请谨慎使用。

rm -rf directoryname

52
“ -f”是“ --force”,它会覆盖一些健全性检查和提示。开始时比较安全的命令是rm -r directoryname
吉姆·巴黎

由于某些原因rm: invalid option -- r,尝试使用rm -r <directoryname>删除目录时出现错误。
Sunspawn 2015年

@Sunspawn 检查此相关问题,看是否是这种情况。
Marc.2377'7

1
@JimParis我认为“更安全”一词是相对的。假设您正在编写脚本以在远程计算机上运行。该脚本具有应该删除目录的命令。在这里,使用rm -rf directorynamecoz 会“更安全” ,因为您不想让脚本暂停执行,因为它正在等待用户输入。当然,您必须确保删除目录不会造成损害。
约翰·雷德

7

如果rm -rf directoryname失败,请尝试使用rm -R -f directorynamerm --recursive -f directoryname

如果您对这些没有任何运气,则应考虑重新安装rm或切换外壳。


这些是我的rm手册页上可用的选项,我通过键入内容man rm进行了查找,以查看有关递归删除的选项和force选项。
saterHater

您的rm手册页列出了-r吗?它有什么作用?(在仅用于测试目的的目录中尝试该目录,其中仅包含虚拟文件(可能还有子目录)。)您正在使用什么操作系统?
G-Man

PS如果rm -r不起作用,那将是操作系统问题,而不是外壳问题。(严格来说,这是rm您所使用的版本的问题,因此您可以通过安装的其他版本来解决该问题rm,或者搜索系统以查看rm除某个目录之外是否已经有其他版本的/bin。)
G-Man

嗯对 我忘了提到我在Ubuntu 14.04上,当我man rm在终端上运行时,它通过less文本查看器提供了一个文本文件。我滚动查看了一个带有整体的缩进条目,该条目的-R--recursive选项与-r选项结合在一起,表示所有这些参数都是相同的。
saterHater 2015年

1
编辑:您尝试过sudo rm -r directoryName吗?基本命令的不成文规则是,-r它将允许程序在文件系统上的每个文件上递归运行(从您选择的任何地方开始!),并且-f将强制执行操作,即使这样做很危险。'cd','mv','ls' 基本上保持了这一原理。ls -r /将成为一个笨蛋,cp -rf / /dev/null并将破坏文件系统上的所有内容。<-永远不要运行该命令!
saterHater 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.