如何在Linux中删除(删除)目录

在Linux系统中,有几种删除目录的方法。 如果使用桌面文件管理器,例如Gnome的文件或KDE的Dolphin,则可以使用管理器的图形用户界面删除文件和目录。 但是,如果您正在使用无头服务器,或者想一次删除多个目录,则最好的选择是从命令行中删除目录(文件夹)。

在本文中,我们将说明如何使用Linux删除目录 rmdirrmfind 命令。

在你开始之前 #

使用桌面文件管理器删除目录时,该目录实际上已移至“废纸rash”并且可以轻松恢复。

从命令行删除文件或目录时要格外小心,因为一旦使用本文介绍的命令删除了目录,就无法完全恢复该目录。

在大多数Linux文件系统上,删除目录需要对该目录及其内容具有写权限。 否则,将出现“不允许操作”错误。

其中带有空格的目录名称必须以反斜杠转义(/)。

使用删除目录 rmdir

rmdir 是用于删除空目录的命令行实用程序。 当您只想删除目录为空而无需检查目录是否为空时,此功能很有用。

删除目录 rmdir,键入命令,然后输入要删除的目录的名称。 例如,删除名为 dir1 您将输入:

rmdir dir1

如果目录不为空,则会出现以下错误:

rmdir: failed to remove 'dir1': No such file or directory

在这种情况下,您将需要使用 rm 命令或手动删除目录内容,然后再将其删除。

使用删除目录 rm

rm 是用于删除文件和目录的命令行实用程序。 不像 rmdirrm 该命令可以删除空目录和非空目录。

默认情况下,不带任何选项使用时 rm 不删除目录。 要删除空目录,请使用 -d--dir)选项并删除非空目录,其所有内容均使用 -r--recursive 要么 -R) 选项。

例如删除名为 dir1 连同其所有内容,您将输入:

rm -r dir1

如果目录或目录中的文件受写保护,则将提示您确认删除。 要删除目录而不提示您,请使用 -f 选项:

rm -rf dir1

要一次删除多个目录,请调用 rm 命令,后跟用空格分隔的目录名称。 下面的命令将删除列出的每个目录及其内容:

rm -r dir1 dir2 dir3

-i 选项告诉 rm 提示您确认删除每个子目录和文件。 如果目录中包含很多文件,这可能会有些烦人,因此您可以考虑使用 -I 选项,在继续删除之前只会提示您一次。

rm -rI dir1

删除目录类型 y 并击中 Enter

rm: remove 1 argument recursively? y

您还可以使用常规扩展名来匹配和删除多个目录。 例如,要删除当前目录中以结尾的所有所有一级目录 _bak,您将使用以下命令:

rm -r *_bak

删除目录时使用常规扩展可能会有风险。 建议首先列出带有 ls 命令,以便您可以看到在运行前将删除哪些目录 rm 命令。

使用删除目录 find

find 是一个命令行实用程序,可让您根据给定的表达式搜索文件和目录,并对每个匹配的文件或目录执行操作。

最常见的情况是使用 find 命令根据模式删除目录。 例如,删除所有以结尾的目录 _cache 在当前工作目录中,您将运行:

find . -type d -name '*_cache' -exec rm -r {} +

让我们分析上面的命令:

  • /dir -在当前工作目录中递归搜索(.)。
  • -type d -将搜索限制为目录。
  • -name '*_cache' -仅搜索以结尾的目录 _cache
  • -exec -执行带有可选参数的外部命令,在这种情况下,即 rm -r
  • {} + -将找到的文件附加到文件末尾 rm 命令。

删除所有空目录

要删除目录树中的所有空目录,请运行:

find /dir -type d -empty -delete

这是使用的选项的说明:

  • /dir -递归搜索 /dir 目录。
  • -type d -将搜索限制为目录。
  • -empty -仅将搜索限制为空目录。
  • -delete -删除子树中所有找到的空目录。 -delete 只能删除空目录。

使用 -delete 选择时要格外小心。 find命令行被评估为表达式,如果添加了 -delete 选项首选项,该命令将删除您指定的起点以下的所有内容。

始终先测试命令,而无需 -delete 选择和使用 -delete 作为最后一个选择。

/ bin / rm:参数列表太长

当您使用 rm 命令删除包含大量文件的目录。 发生这种情况是因为文件数大于命令行参数大小的系统限制。

有几种不同的解决方案来解决此问题。 例如,您可以 cd 到目录,然后手动或使用循环逐个删除子目录。

最简单的解决方案是首先使用删除目录中的所有文件。 find 命令,然后删除目录:

find /dir -type f -delete && rm -r /dir

结论#

rmfind 您可以根据不同条件快速有效地删除目录。

删除目录是一个简单容易的过程,但是您必须小心不要删除重要数据。

如果您有任何疑问或反馈,请随时发表评论。

rm rmdir查找终端

Sidebar