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

前言

使用桌面文件管理器删除目录时,该目录实际上已移至回收站,并且可以轻松恢复,从命令行删除文件或目录时要格外小心,因为一旦使用本文中介绍的Linux命令删除目录,就无法完全恢复。在大多数Linux文件系统上,删除目录需要对目录及其内容具有写权限,否则你将收到“不允许操作(Operation not permitted)”的错误,同时必须使用反斜杠(/)转义其中包含空格的目录名称。

使用rmdir命令来删除目录

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

要使用rmdir命令删除目录,请输入命令,后跟要删除的目录的名称,例如,要删除名为dir1的目录,请输入:

$ rmdir dir1

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

rmdir:无法删除'dir1':没有这样的文件或目录(rmdir: failed to remove 'dir1': No such file or directory)。

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

使用rm命令来删除目录

rm是一个用于删除文件和目录的命令行实用程序,与rmdir命令不同,rm命令可以删除空目录和非空目录,参考rm命令_Linux 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:递归删除1个参数? y(rm: remove 1 argument recursively? y)

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

$ rm -r *_bak

删除目录时使用常规扩展可能存在风险,建议首先使用ls命令列出目录,以便在运行rm命令之前查看将删除的目录。

使用find命令来删除目录

find是一个命令行实用程序,允许你根据给定的表达式搜索文件和目录,并对每个匹配的文件或目录执行操作,参考使用Linux查找命令find的语法和示例,使用find能查找文件。

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

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

让我们分析一下上面的命令:

1]、/dir:递归搜索当前工作目录(.)。

2]、-type d:将搜索限制为目录。

3]、-name'*_cache':仅搜索以_cache结尾的目录

4]、-exec:使用可选参数执行外部命令,在本例中为rm -r。

5]、{} +:将找到的文件追加到rm命令的末尾。

附1:删除所有空目录

要删除目录树中的所有空目录,将使用:

$ find /dir -type d -empty -delete

以下是对所用选项的解释:

1]、/dir:在/dir目录中递归搜索。

2]、-type d:将搜索限制为目录。

3]、-empty:仅将搜索限制为空目录。

4]、-delete:删除子树中所有找到的空目录,-delete只能删除空目录。

请谨慎使用-delete选项,find命令行被计算为表达式,如果先添加-delete选项,该命令将删除指定起始点以下的所有内容,始终使用-delete作为最后一个选项,在删除之前,首先测试命令而不使用-delete选项。

附2:/bin/rm:参数列表太长(/bin/rm: Argument list too long)

使用rm命令删除包含大量文件的目录时,会出现此错误消息,发生这种情况是因为文件数大于命令行参数大小的系统限制。这个问题有几种不同的解决方案,例如,你可以cd到目录并手动或使用循环逐个删除子目录。

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

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

结语

以上就是主流的删除目录方法,适合在大多数Linux操作系统中。建议使用rm并找到你可以快速有效地删除基于不同标准的目录,同时删除目录是一个简单的操作,但是在操作之前必须小心,不要删除了重要数据,建议采取备份的方式。

TAG:

除非注明,文章均由 Linux系统学习 整理发布,欢迎转载。如有版权争议,请联系删除。

文章评论

留言与评论(共有 0 条评论)

验证码:

在linux系统中删除目录的命令是,在Linux中使用rmdir、rm和find命令删除目录的方法...相关推荐

  1. Linux系统运维与架构设计之Linux概述

    Linux系统运维与架构设计之Linux概述 Linux系统运维与架构设计 1.1 浅谈计算机系统 1.1.1 计算机硬件系统 现代计算机是基于冯·诺依曼体系结构,由运算器.控制器.存储器.输入设备. ...

  2. 61-20210407华为海思Hi3516DV300的linux系统下控制GPIO口(标准linux模式点亮LED灯)

    61-20210407华为海思Hi3516DV300的linux系统下控制GPIO口(标准linux模式点亮LED灯) 2021/4/7 15:13 https://xueqiu.com/797071 ...

  3. Linux系统详解 第五篇:Linux的安装-4:Fedora 16的安装

    Linux系统详解 第五篇:Linux的安装-4:Fedora 16的安装 前言: 本系列文章取材广泛,有来自于互联网的,有来自教科书的,有来自自己的笔记的,也有来自自己对Linux的经验积累的.此系 ...

  4. linux系统线程通信的几种方式,Linux进程间通信-线程间通信

    Linux作为一种新兴的操作系统,几乎支持所有的Unix下常用的进程间通信方法:管道.消息队列.共享内存.信号量.套接口. 1.管道 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动 ...

  5. linux 文件和打印机共享文件夹,能实现Windows和Linux系统之间文件和打印机共享的Linux服务是( )...

    能实现Windows和Linux系统之间文件和打印机共享的Linux服务是( ) 答:SAMBA HTML 代 码 表示() 答:创建一个单选框 根据凯恩思的理论,在短期中总供给线为一条水平线,当总需 ...

  6. linux系统里route -n不起作用,Linux系统中traceroute命令使用详解

    Linux系统中traceroute命令可以追踪到网络数据包的路由途径.下面由学习啦小编为大家整理了linux系统中traceroute命令使用详解,希望对大家有帮助! Linux系统中tracero ...

  7. Linux系统简介-虚拟机安装教程(保姆级)-Linux常用命令

    Linux系统简介-虚拟机安装教程-Linux常用命令 1.Linux系统简介 1.1Linux系统的历史 1.2Linux系统的特点和优势 1.3Linux发行版的分类 2.虚拟机的安装教程 2.1 ...

  8. linux系统在硬盘上安装程序,在硬盘中安装Linux操作系统最简单的方法

    通过Grub(多系统引导管理器)来安装 本人最近摸索Linux系统,想在本机上安装双系统,但我这老爷机上没有软驱,没有刻录机,下载的ISO文件只能存在硬盘上,也只能通过硬盘来安装,在各大Linux的B ...

  9. win10中linux系统下载软件,win10 上安装 Debian Linux子系统

    Win10 最近有了一个行的称号: 最强Linux发行版,为什么会有这么一个称号呢,因为win10的子Linux系统已经让win10集成了linux系统,应用商店里也已经上架了多种linux的发行版. ...

  10. linux系统时钟使用utc,如何设置时间,时区和同步系统时钟使用timedatectl命令

    该timedatectl命令是RHEL / CentOS 7和Fedora 21+根据发行,这是作为systemd系统和服务经理,用于基于sysvinit的后台程序的Linux发行版使用旧的传统dat ...

最新文章

  1. 千万不要把 bool 当成函数参数
  2. instanceOf,isInstance,Class,isAssignableFrom区别比较
  3. Service Bus EAI EDI 实验室发布了
  4. oracle group by用法
  5. 同大取大同小取小口诀图解_微信课堂:峦头九星砂体图解
  6. linux模拟主机宕机,AIX HA模拟宕机--维护磁带机
  7. 一直在构建工作空间_国际资讯Python与地理空间分析
  8. JSP 中使用Struts2的值
  9. 频率响应函数与数字滤波实验_WKD3419振动测试与控制教学实验系统
  10. oracle左连接数据会对不上吗,一周工作总结–左连接造成的一些问题-Oracle
  11. 测试两个主机之间的连通性_常用的光缆4种测试方法介绍
  12. 洛谷 P1129 [ZJOI2007]矩阵游戏 解题报告
  13. 2018-2019-1 20189221 《构建之法》第 3 周学习总结
  14. PlayWidget
  15. QuickServer开发指南(1)- 介绍
  16. Cesium中的Heading/Pitch/Roll
  17. mysql怎么导出insert语句_mysql导出insert语句
  18. 淘宝/天猫收货地址列表 API和快递费用的 API解析
  19. c语言头文件写法,C语言头文件正确写法
  20. Springboot+easyUI filebox实现单个文件上传

热门文章

  1. Python描述 LeetCode 6094. 公司命名
  2. window解锁网易云灰色歌曲
  3. Fixing Pathfinding Once and For All (个人翻译)
  4. 讲者招募 | 招募 AAAI 2023 一作华人讲者啦!
  5. Java自学习day4.2-分支语句2:witch-case结构
  6. JAVA正则表达式匹配字母数字下划线符号
  7. 闲鱼项目是真的吗?新手实操赚钱攻略手册!
  8. 用C#执行vbs脚本文件
  9. 神州信息校招面经(2020校园招聘Java开发岗)
  10. word2010在左侧显示目录结构