如何在终端中删除非空目录?


629

如何删除以下目录?

我输入:

rmdir lampp

出现此错误:

rmdir: failed to remove `lampp': Directory not empty

是否有命令删除目录中的所有文件并删除目录文件夹?


1
我无法使用上述所有详细命令删除“ New Folder”之类的目录。这是双重措辞。但我想删除该目录。任何建议都将受到欢迎。印度班加罗尔T.Divakara

它是文件名中的空白,请尝试使用'quotes'> rmdir'New Folder'<然后使用该文件夹,或者使用转义字符表示不可见的字符。
肯·莫勒鲁普

2
只要做rm -r lampp就可以。
John Strood

Answers:


875

使用以下命令:

rm -rf lampp

它将删除lampp目录中包含的所有文件和文件夹。

如果用户没有删除文件夹的权限:

sudo在命令开头添加:

sudo rm -rf folderName

否则,如果没有sudo您,将被拒绝权限。最好不要-f在删除目录时使用它:

sudo rm -r folderName

注意:这是假设您已经与要在终端中删除的文件夹处于同一级别,如果没有,请执行以下操作:

sudo rm -r /path/to/folderName

FYI:您可以使用字母-f-r-v

  • -f =忽略不存在的文件,从不提示
  • -r =递归删除目录及其内容
  • -v =解释正在做什么

69
以我的拙见,最好不要在首次尝试时添加“ f”。其目的是忽略某些可能很重要的警告提示,尤其是如果您不小心在错误的目录上/从错误的目录中执行了警告提示。我认为最好先不使用“ f”,然后再遇到许多警告提示并且确定可以忽略所有警告提示,然后按Ctrl + C并在命令中重复使用“ F”。
thomasrutter

@BKSpurgeon不,除非你不小心输入--no-preserve-root
muru

@thomasrutter ...同意。可以使用-f开关删除文件“ xxx”的所有者:root 和组:root。而且没有须藤。这是不带-f的消息:“ rm:删除受写保护的常规文件'/home/william/.cache/netbeans/v08.01/tmp/xxx'?_”。_轻轻踩一下。

95
rm -R lampp

但是,您需要小心使用这样的递归命令,因为很容易意外删除了比您预期的要多的内容。

在按Enter键之前,始终仔细检查您所在的目录以及是否正确键入了命令是一个好主意。

更安全的版本

rm -R -i lampp

添加-i会使其更加安全,因为它会在每次删除时提示您。但是,如果要删除许多文件,这将不太实用。不过,您可以先尝试一下。

关于 选项的注意事项-f

许多人建议使用-f(将其组合到-Rf或中-rf),声称它摆脱了烦人的提示。但是,在通常情况下,您不需要它,使用它可以消除您可能确实想知道的一些问题。使用它时,如果您的参数提供了不存在的目录或文件,则不会发出警告:rm只会默默地删除任何内容。作为一般规则,请首先尝试不使用-f::如果参数存在问题,则您会注意到。如果您开始收到太多关于文件的无写访问权限的提示,则可以尝试使用-f。或者,从对您要删除的文件和目录具有完全权限的用户(或使用sudo的超级用户)运行命令,以防止出现这些提示。


4
注意:小写字母-r也可以使用,并且在这里具有相同的效果。我只倾向于使用大写字母,-R因为它与我使用的其他命令(例如grep和)一致chmod,其中某些命令仅支持大写形式。
thomasrutter

这个在Android上使用adb(Android调试桥)为我工作。在尝试rm -rf,但是没有用。不得不使用rm -R。谢谢。
raddevus

这是一个很好的解决方案,特别是如果没有使用Bash终端的经验。该命令可以缩短为rm -ir FOLDER
AlainD

24

有很多方法可以通过CLI模式删除目录。这取决于您对哪种方式感到满意。

rm -rvf /path/to/directory  
  • -r =递归删除目录及其内容
  • -v =解释正在做什么
  • -f =忽略不存在的文件,从不提示

如果您是Linux的新手,请使用命令(man rm)的手册页以获得更多选项和更多准确性。


-2

我今天遇到了一些麻烦,但是我用sudo克服了它。

警告:在使用下面的命令之前,请确保您要删除整个内容。

$ sudo rm -R [Directory name]

我今天成功完成了此操作,并删除了许多我确认不需要的非空目录。

我正在使用14.04 LTS


4
“ SUDO”不是命令-“ sudo”是命令。但是,您不会使用sudo删除非空目录,而是使用它来删除不属于您的文件。这样做当然是危险的,而且不是很明智,因为您不应该盲目删除不拥有的文件。
马蒂·弗里德

-3

顺便说一句,我个人想删除一个包含写保护文件的目录(.git和子目录),最终意识到我还需要成为超级用户才能成功删除这些文件。这是我所做的:

#became super user
sudo su -

#deleted contents of, and then the directory, harvey_snake/
rm -R harvey_snake/

4
我认为您不需要sudo su在这里。只需在rm命令前面加上即可sudo。为了安全起见,一个好习惯(根据sudo的支持者)在不需要时不要保留在根提示符下。
thomasrutter 2014年

2
另外,非常非常非常确定您所在的目录sudo rm -r
托尼·马丁

您可以将命令/directory_name设为root-relative(),因此毫无疑问要删除哪个目录。
Yaakov Ainspan '16
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.