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

nav*_*een 731 command-line

如何删除以下目录?

我输入:

rmdir lampp
Run Code Online (Sandbox Code Playgroud)

出现这个错误:

rmdir: failed to remove `lampp': Directory not empty
Run Code Online (Sandbox Code Playgroud)

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

小智 1027

使用以下命令:

rm -rf lampp
Run Code Online (Sandbox Code Playgroud)

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

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

sudo在命令开头添加:

sudo rm -rf folderName
Run Code Online (Sandbox Code Playgroud)

否则,未经sudo您的许可将被拒绝。-f删除目录时尽量不要使用是一个好习惯:

sudo rm -r folderName
Run Code Online (Sandbox Code Playgroud)

注意:这是假设您已经在终端中要删除的文件夹的同一级别,如果不是:

sudo rm -r /path/to/folderName
Run Code Online (Sandbox Code Playgroud)

仅供参考:您可以使用字母-f, -r, -v

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

  • 以我的拙见,最好不要在第一次尝试时添加“f”。它的目的是忽略某些可能很重要的警告提示,特别是如果您不小心在错误的目录上/从错误的目录中执行了此操作。在我看来,最好先尝试不使用“f”,然后只有当您遇到很多警告提示并且您确定可以忽略它们时,Ctrl+C 退出它并使用“重复命令” F”。 (71认同)

tho*_*ter 101

rm -R lampp
Run Code Online (Sandbox Code Playgroud)

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

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

更安全的版本

rm -R -i lampp
Run Code Online (Sandbox Code Playgroud)

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

关于 选项的注意事项-f

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

  • 注意:小写的 `-r` 也可以使用,在这里也有同样的效果。我只倾向于使用大写的 `-R`,因为它与我使用的其他命令一致,例如 `grep` 和 `chmod`,其中一些只支持大写形式。 (5认同)

小智 29

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

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

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