找回密码
 立即注册
Qt开源社区 门户 查看内容

Linux 中删除目录的多种方法

2019-10-12 18:54| 发布者: admin| 查看: 644| 评论: 0

摘要: 有几种不同的方法可以删除Linux系统中的目录。如果您使用桌面文件管理器(如 Gnome 的文件管理器或 KDE 的 Dolphin) ,则可以使用管理器的图形用户界面删除文件和目录。但是,如果您正在使用无头服务器或想要一次删除 ...


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

在这篇文章中,我们将介绍如何使用 rmdir , rm 和 find 命令删除 Linux 中的目录。

在你开始之前

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

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

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

必须使用反斜杠 (/) 转义其中包含空格的目录名称。

删除目录 rmdir

rmdir 是一个用于删除空目录的命令行实用程序。只有当目录为空时才需要删除目录,而不需要检查目录是否为空。

要删除目录 rmdir ,请键入命令,然后键入要删除的目录的名称。例如,要删除名为 linuxmi 的目录,请键入:

linuxidc@linuxidc:~$ rmdir linuxmi

如果目录不为空,您将收到以下错误:

rmdir: 删除 'linuxmi' 失败: 目录非空



在这种情况下,您需要使用该 rm 命令或手动删除目录内容,然后才能删除它。

删除目录 rm

rm 是一个用于删除文件和目录的命令行实用程序。与命令不同 rmdir, rm 可以删除空目录和非空目录。

默认情况下,在没有任何选项的情况下使用时 rm 不会删除目录 要删除空目录,请使用 -d(--dir) 选项。 如果要删除非空目录和其中的所有内容,请使用 -r(--recursive 或 -R) 选项。

例如,要删除一个名为 linuxmi 及其所有内容的目录,您可以键入:

rm -r linuxmi

如果目录中的目录或文件受到写保护,系统将提示您确认删除。要在不提示的情况下删除目录,请使用以下 -f 选项:

rm -r dirname

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

rm -r linuxmi linuxmi linuxidc

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

rm -rI linuxidc

确定要删除目录请输入 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 {} +



让我们分析一下上面的命令:
•.- 递归搜索当前工作目录(.)。
•-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: Argument list too long

使用该 rm 命令删除包含大量文件的目录时,会出现此错误消息。发生这种情况是因为文件数大于命令行参数大小的系统限制。

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

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

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

总结

使用 rm 和 find 您可以快速有效地删除基于不同标准的目录。

删除目录是一个简单而简单的过程,但您必须小心不要删除重要数据。
让您学习到的每一节课都有所收获

《Linux就该这么学》是一本由资深运维专家刘遄老师及国内多名红帽架构师(RHCA)基于最新RHEL7系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材。荣获双11、双12购物狂欢节IT品类书籍销量冠军,2017年、2018年国内读者增速最快的技术书籍,您可以在京东、当当、亚马逊及天猫搜索书名后购买,亦可加刘遄老师微信交流学习(手指按住下图3秒钟即可自动扫描)~



刘遄老师QQ:5604922

☀ Linux技术交流群:2265381(新群,火热加群中……)

☀ 官方站点:www.linuxprobe.com

☀ 书籍在线学习(电脑在线阅读效果更佳):

http://www.linuxprobe.com/chapter-00.html

《Linux就该这么学》是一本基于最新Linux系统编写,面向零基础读者的技术书籍。从Linux基础知识讲起,然后渐进式地提高内容难度,详细讲解Linux系统中各种服务的工作原理和配置方式,以匹配真实生产环境对运维人员的要求,突显内容的实用性。想要学习Linux系统的读者可以点击"阅读原文"按钮了解这本书,同时这本书也适合专业的运维人员阅读,作为一本非常有参考价值的工具书!


----------------------------------------------------------------------------------------------------------------------
我们尊重原创,也注重分享,文章来源于微信公众号:Linux就该这么学,建议关注公众号查看原文。如若侵权请联系qter@qter.org。
----------------------------------------------------------------------------------------------------------------------

鲜花

握手

雷人

路过

鸡蛋

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了