如何在Linux下删除(删除)目录
在Linux系统中有几种不同的删除目录的方法。
如果您使用桌面文件管理器,如Gnome的文件或者KDE的Dolphin,那么您可以使用管理器的图形用户界面删除文件和目录。
但是,如果您在一个无鼠键显示器服务器上工作或者想要一次删除多个目录,那么最好的选择是从命令行中删除这些目录(文件夹)。
在本文中,我们将解释如何在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结 tail的所有一级目录,可以使用以下命令:
rm -r *_bak
删除目录时使用常规扩展可能会有风险。
建议首先使用ls命令列出目录,以便在运行rm命令之前查看要删除哪些目录。
使用"查找"删除目录
find是一个命令行实用程序,允许您根据给定的表达式搜索文件和目录,并对每个匹配的文件或者目录执行操作。
最常见的情况是使用find命令根据模式删除目录。
例如,要删除当前工作目录中以_cache结 tail的所有目录,可以运行:
find . -type d -name '*_cache' -exec rm -r {} +
让我们分析一下上面的命令:
/dir-在当前工作目录(.)中递归搜索。
-类型d-将搜索限制为目录。
-名称'*_cache'-只搜索以_cache结 tail的目录
-exec-执行带有可选参数的外部命令,在本例中为rm-r。
{}+-将找到的文件追加到rm命令的末尾。
正在删除所有空目录
要删除目录树中的所有空目录,请运行:
find /dir -type d -empty -delete
以下是所用选项的说明:
/dir-在/dir目录中递归搜索。
-类型d-将搜索限制为目录。
-empty-将搜索限制为空目录。
-删除-删除子树中找到的所有空目录。
-删除只能删除空目录。
使用-delete选项时要格外小心。
find命令行作为表达式进行计算,如果先添加-delete选项,则该命令将删除指定起点以下的所有内容。
总是先测试命令而不使用-delete选项,然后使用-delete作为最后一个选项。
/bin/rm:参数列表太长
使用rm命令删除包含大量文件的目录时,将显示此错误消息。
发生这种情况是因为文件数大于系统对命令行参数大小的限制。
这个问题有几种不同的解决办法。
例如,您可以cd到目录,并手动或者使用循环来逐个删除子目录。
最简单的解决方案是首先使用find命令删除目录中的所有文件,然后删除目录:
find /dir -type f -delete && rm -r /dir