在Linux系统中,有几种删除目录的方法。如果使用桌面文件管理器,例如Gnome的文件或KDE的Dolphin,则可以使用图形用户界面管理器删除文件和目录。但是,如果您在没有GUI的服务器上工作,或者想一次删除多个目录,最好的选择是从命令行中删除目录(文件夹)。
在这篇文章中,我们将介绍如何删除使用Linux中的目录rmdir,rm和find命令。
在你开始之前
当您使用桌面文件管理器删除目录时,该目录实际上是移至垃圾箱,并且可以轻松恢复。
从命令行删除文件或目录时要格外小心,因为一旦使用本文介绍的命令删除了目录,就无法完全恢复目录。
在大多数Linux文件系统上,删除目录需要对该目录及其内容具有写权限。否则,您将收到“权限不允许操作”错误。
其中包含空格的目录名称必须使用反斜杠/进行转义。
使用rmdir删除目录
rmdir是用于删除空目录的命令行实用程序。当您仅希望目录为空时才能删除它,而无需检查目录是否为空,此功能很有用。
要使用rmdir删除目录,请键入命令,然后输入要删除的目录名称。例如,要删除名为的目录,dir1请输入:
rmdir dir1如果目录不为空,则会出现以下错误:
rmdir: failed to remove 'dir1': No such file or directory在这种情况下,需要先使用rm命令或手动删除目录内容,然后才能删除它。
使用rm删除目录
rm是用于删除文件和目录的命令行程序。与rmdir命令不同,rm可以删除空目录和非空目录。
默认情况下,不带任何选项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命令删除目录中的所有文件,然后删除目录:
rmdir: failed to remove 'dir1': No such file or directory0结论
使用rm和find您可以根据不同的标准快速有效地删除目录。
删除目录是一个简单而轻松的过程,但是您必须小心不要删除重要数据。





还没有评论,来说两句吧...