Linux 中删除目录的多种方法

有几种不同的方法可以删除 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 您可以快速有效地删除基于不同标准的目录。

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

Image placeholder
nckffz
未设置
  63人点赞

没有讨论,发表一下自己的看法吧

推荐文章
Java 程序员眼中的 Linux_1.0.Linux 介绍

Linux介绍 Linux这个名字 Linux的Wiki介绍:http://zh.wikipedia.org/zh/Linux Linux也称:GNU/Linux,而其中GNU的全称又是:Gnu’sN

[Java 程序员眼中的 Linux] Linux 下常用压缩文件的解压、压缩

Linux下常用压缩文件的解压、压缩 常用压缩包解压命令整理 Linux后缀为.tar.gz格式的文件-解压 命令:tarzxvfXXXXXX.tar.gz Linux后缀为.bz2格式的文件-解压

笨办法 学Linux 安装Linux

Linux学习起步 Windows,VirtualBox虚拟机(.ova格式的预配置映像) 学习Linux你需要什么 VitualBox,虚拟机播放器。 putty,终端模拟器。 预配置的Virtua

Linux/Unix 基础:什么是 Linux?

简单来讲,Linux是一个操作系统(OS)。我们都很熟悉其他操作系统,就像Microsoftwindows,AppleMacOS,iOS,Googleandroid,等等这些,linux就像它们一样,

Linux/Unix 基础:Linux 的历史

Linux的诞生 在1991年,来自芬兰Helsinki大学的学生LinusTorvalds认为市场上应该有一个比较统一的Unix版本,从此他就开始为这个项目奋斗。后来这个项目就成为了Linux操作系

别小瞧了 Linux,安卓、华为的自研系统,均源自 Linux!

众所周知,目前国内已有众多的国产系统,基本上均源自linux,以linux为基础进行二次开发。比如红旗linux、深度等等。但不知道为什么,一说起某系统是基于linux而来,很多网友就瞧不起,并且会觉

Golang 里的 AES、DES、3DES 加解密,支持 ECB、CBC 等多种模式组合

Opensslencryption:OpenSSL库的功能包装,用于对称和非对称加密和解密。 AES-ECB AES-CBC DES-ECB DES-CBC 3DES-ECB 3DES-CBC 安

分享一款支持多种短信服务商 Hyperf 组件,基于 overtrue/easy-sms 组件改造

一款支持多种短信服务商Hyperf组件1.新增配置文件phpbin/hyperf.phpvendor:publishhyperf-libraries/sms2.修改配置

SWIG-Python中调用C代码的另一种方法

SWIG SWIG是SimplifiedWrapperandInterfaceGenerator的缩写。是Python中调用C代码的另一种方法。在这个方法中,开发人员必须编写一个额外的接口文件来作为S

CSS实现自适应分隔线的N种方法

分割线是网页中比较常见的一类设计了,比如说知乎的更多回答这里的自适应是指两边的横线会随着文字的个数和父级的宽度自适应偷偷的看了一下知乎的实现,很显然是用一块白色背景覆盖的,加一点背景就露馅了心想:知乎

本地读写的多活数据存储架构设计要义

本文由公众号EAWorld翻译发表,转载需注明出处。作者:ParasharBorkotoky 译者:白小白 原文:http://t.cn/AiKO0q4P原题:DesignConsiderations

angular国内用的多吗?

angular在国内为什么用的人会少?大家会认为入门高,下面主观的总结了以下几点:Google没有营销好,刚开始Angular2出来的时候没有很好的照顾Angular1.x的用户,导致大量用户流失到其

go 数组传递给函数三种方式

funcmain(){ arr1:=[5]int{} //值传递 arr(arr1) fmt.Println(arr1) //&地址传递(指针) arra(&arr1) fmt.Println(

程序员有话说:开发人员提升自己的四种方式

开发人员之间所谓的不同“级别”的界线是模糊 的。如果你问高级开发人员、开发经理或技术总监:“初学者、初级、中级和高级之间的区别是什么?”那么很有可能他们会给你截然不同的意见。由于存在各种各样的意见,因

重新认识一下JS声明变量的六种方式吧

开始先说一下JS中有哪六种变量的声明方法吧,然后我们带着三个问号去看文章:what?how?where?六种声明变量的方法: var let const function import class 没

Linux Shell 脚本快速入门

shell脚本是在一个文件中写入一起执行的命令集。对于使用像dos操作系统的DOS,windows操作系统的bat,linux操作系统的files的人来说,这几乎都是相同的概念。你只需要把一串命令写

Linux 安装 Node.js

因为我用最简单yum命令安装node.js发现node的版本不是最新的所以自己手动安装了nodejs流程如下 进入服务器安装nodejs安装包 进入保存包的目录 $cddownload 下载二进制

Linux 安装 Node.js

因为我用最简单yum命令安装nodejs发现node的版本不是最新的所以自己手动安装了nodejs流程如下 进入服务器安装nodejs安装包 进入保存包的目录 $cddownload 下载二进制包

Linux Shell 脚本快速入门

shell脚本是在一个文件中写入一起执行的命令集。对于使用像dos操作系统的DOS,windows操作系统的bat,linux操作系统的files的人来说,这几乎都是相同的概念。你只需要把一串命令写入

Linux 文件同步工具之 rsync

学习背景 1.最近公司的项目在使用jenkins做自动化构建,因为jenkins在构建时是比较耗性能的,便单独使用了一台服务器做构建服务器。但是个人觉得这样成本过高,单独拿一台服务器来构建并且该服务器

笨办法学 Linux 学习文本编辑器--vim

Linux学习文本编辑器--vim 在Linux中,就像任何类Unix操作系统,一切都只是文件。而Unix哲学指出,配置文件必须是人类可读和可编辑的。在几乎所有的情况下,它们只是纯文本。所以,首先,你

笨办法学 Linux 初识less

#文本浏览器,少即是多 现在你可以编辑文本文件,这很好。但是如果你只想查看一个文本文件呢?当然,你可以使用vim,但很多时候它是过度的。还有两件事要考虑: 如果你想查看非常大的文件,你将需要在尽可能快

笨办法学 Linux Bash:Shell、`.profile`、`.bashrc`、`.bash_history`

Bash:Shell、.profile、.bashrc、.bash_history。 当使用CLI(命令行界面)来使用Linux时,你正在与一个名为shell的程序进行交互。所有你输入的都传递给she

笨办法学 Linux 学习处理文件,`pwd`,`ls`,`cp`,`mv`,`rm`,`touch`

Bash:处理文件,pwd,ls,cp,mv,rm,touch 在Linux中,一切都是文件。但是什么是文件?现在完全可以说,它是一个包含一些信息的对象。它通常定义如下: 计算机文件是用于存储信息的

工具分享:Linux tree 命令安装和使用

说明tree命令是一个比较实用文件系统查看工具,如下图,可以阶梯式地罗列某个目录下的所有子目录:如何安装?RHEL/CentOS下:#yuminstalltree-yDebian/Ubuntu, Mi