linux组合命令:删除一个目录树中所有的空目录(包括嵌套空目录)

news2024/9/20 1:14:22

目录

一、需求

二、实现方式

1、结合使用 find 命令删除空目录

(1)删除目录的方式

(2)只删除空目录

2、更高效的方法

(1)使用 find 搭配 -delete

(2)实际效果

三、相关命令介绍

1、find

2、rmdir


一、需求

        当我们在做linux运维时,经常要安装或卸载软件包,或者移动或删除文件夹时,经常会留下一些空目录。这些空目录不再有用,为了保持文件系统的整洁,需要将它们清理掉。

        但是有时候这些目录有一些嵌套,进入每个目录删除,比较麻烦,如何使用一个命令可以完成清理所有的空目录?

二、实现方式

1、结合使用 find 命令删除空目录

(1)删除目录的方式

        可以使用 find 命令结合 -type d(表示目录)和 -empty(表示空)选项,然后使用 -exec 执行 rmdir 命令。

        但是,rmdir 本身不支持直接处理由 find 命令找到的多个目录,因此可能需要使用 xargs 或在 find 命令中直接执行 rm -r(但后者会递归删除非空目录,所以使用时需要小心)。

(2)只删除空目录

        对于只删除空目录的情况,可以使用以下方式之一:

        find . -type d -empty -exec rmdir {} \;

        实际效果如下图:

        使用 find 和 -exec,但每次只处理一个层级的目录(不是最高效的方法),通过上述的实际操作结果就可以看出来。

2、更高效的方法

(1)使用 find 搭配 -delete

        更高效的方法是使用 find 搭配 -delete(但请注意,并非所有版本的 find 都支持 -delete 选项用于目录):

find . -type d -empty -delete

(2)实际效果

       使用上述命令,实际操作结果如下:

        但是,由于 -delete 选项可能不被所有 find 实现支持用于目录,可能需要依赖其他方法,如通过管道传递给 xargs 的 rmdir,但是,这通常需要对 find 的输出进行特殊处理,因为 rmdir 不直接接受多个参数作为输入(除非它们被单独传递给 rmdir 的多个实例)。

三、相关命令介绍

1、find

     Linux的find命令是最重要和最常用的命令之一,用于在目录树中查找文件和目录。它可以根据各种条件进行搜索,包括文件名、权限、用户和组、文件类型、文件大小、日期和时间等。   

        请参考以前的文章:

        《Linux centos中find命令的多种用途:按照具体应用来详细说明find的用法举例

        原文链接:https://blog.csdn.net/weixin_70208651/article/details/135683452

2、rmdir

        rmdir 是一个在 Linux 和其他类 Unix 操作系统中常用的命令行工具,用于删除空目录。与 rm 命令不同的是,rmdir 只能删除空目录,而不支持删除包含文件或子目录的目录。如果想删除非空目录,通常需要使用 rm 命令配合 -r(递归)选项。Rmdir的作用主要用于清理空目录。   但如果目录下还有其他文件或目录,rmdir命令就会失败。此时,需要先删除 该录中的所有内容,然后再使用 rmdir 或者直接使用 rm -r 来删除整个目录。

        更详细介绍,请参考以前的文章:

        《linux命令:用于删除空目录的命令行工具rmdir详细介绍》


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2095844.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32MP157_uboot_命令使用

STM32MP157_uboot_命令使用 前言: 进入 uboot 的命令行模式以后输入“help”或者“?”,然后按下回车即可查看当前 uboot 所支持的命令,图 中只是 uboot 的一部分命令,具体的命令列表以实际为准。图中的命令并不是 uboo…

SpringBoot2:IOC容器的相关操作以及常用注解说明

一、查看容器中的Bean实例 查看springboot中的容器实例,首先,我们要获取到IOC容器。 //1、返回我们的IOC容器ConfigurableApplicationContext run SpringApplication.run(MainApplication.class, args);//2、查看容器里面的组件String[] names run.ge…

线性代数基础(2)——特征值和特征向量

第一节博客已经整理了求导的公式,一些常用的概念。链接如下:高等数学基础(1)-CSDN博客。 第二节博客整理了微积分的公式及其相关概念。链接如下:高等数学基础(2)——微积分-CSDN博客 第三节博客…

JavaWeb JavaScript ⑩ 日程管理 第一期

自我消耗,敏感是我, 明媚是我, 我横跳在不同的情绪中 —— 24.8.31 一、登录页及校验 1.校验账号格式 // 校验账号格式function checkUsername(){// 定义正则表达式表示字符串规则var usernameReg /^[a-zA-Z0-9]{5,10}$/;// 获取用户名输入…

96.WEB渗透测试-信息收集-Google语法(10)

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 内容参考于: 易锦网校会员专享课 上一个内容:95.WEB渗透测试-信息收集-Google语法(9) • site : x…

【硬件操作入门】3--同步与异步、半双工传输、UART硬件介绍、bps速率计算

【硬件操作入门】3–同步与异步、半双工传输、UART硬件介绍、bps速率计算 文章目录 【硬件操作入门】3--同步与异步、半双工传输、UART硬件介绍、bps速率计算一、同步与异步1.1. 概念1.2 同步信号1.3 异步信号1.4 举个例子:红外遥控器解码器(异步&#x…

一分钟学会系列-1电烙铁(焊台)

目录: ‌1、概述 2、电烙铁的种类 3、焊接步骤 4、电烙铁的保养 ‌1、概述 电烙铁‌是一种电子制作和电器维修中常用的工具,主要用于焊接元件及导线。使用电烙铁时,需要注意安全,并采取适当的预防措施,如使用风扇…

最新ssl证书在线申请源码+网站ICP备案查询源码

最新ssl证书在线申请源码网站ICP备案查询源码 经过精心调试和修复,我们对源码进行了优化,确保了证书价格的准确显示。现在,您可以放心使用我们的在线生成网站源码,完整地展示证书价格,并在生成证书时提供准确的价格计…

SQL-函数

1、字符串函数 # 字符函数 select concat(hello , mysql!); select lower(HELLO); select upper(hello); select lpad(01,5,-);# 左填充 select rpad(01,5,-);# 右填充 select trim( hello mysql ! );# 去除前后空格 select substring(hello mysql!,1,7);# 截取一部分字符前7…

【教学类-35-21】20240901 中2班描字帖(学号+姓名、虚拟姓名、杨任东竹石体 Regular)

背景需求: 8月底通知我成为中2班的班主任,为了快速识别幼儿的脸、姓名、学号,再次制作描字帖,并拍照。 最近做的一份字帖是中4班描字帖 【教学类-35-20】20240328 中4班描字帖(学号姓名 A4竖版2份 横面)…

--- 数据结构 链表 --- java

与顺序表相比,链表的最大优点就是不会存在空间的浪费 链表是通过将一个一个储存数据的节点(对象)连起来(通过记录下他们的地址),这些数据在逻辑上就是线性的,但在物理上不是,因为地…

[Leetcode 216][Medium]组合总和 III--回溯(组合问题)

目录 一、题目描述 二、整体思路 三、代码 一、题目描述 原题地址 二、整体思路 对于组合问题,首先要想到回溯法。那么可以根据回溯法模版进行设计。 void backtrace(元素){if(满足题目要求的条件){保存目前路径/状态/结果;return;}for循环,往目前状态相邻的所…

9-8 束搜索

贪心搜索 穷举搜索 束搜索 小结 序列搜索策略包括贪心搜索、穷举搜索和束搜索。 贪心搜索所选取序列的计算量最小,但精度相对较低。 穷举搜索所选取序列的精度最高,但计算量最大。 束搜索通过灵活选择束宽,在正确率和计算代价之间进行权衡…

栈和队列——用队列实现栈

题目中给出,让我们应用两个队列实现栈,首先我们先来想一下,栈是先进后出,队列是先进先出。所以我们就需要应用两个队列来回导才能实现栈的特点。因为这道题是基于队列来实现的,所以在下方若有看不懂的函数名称可以去栈…

Java 入门指南:Java 并发编程 —— Synchronized 实现悲观锁(Pessimistic Locking)

悲观锁 悲观锁(Pessimistic Locking)是一种悲观的并发控制机制,它基于悲观的假设,即并发冲突会时常发生,因此在访问共享资源(如数据库记录或共享变量)之前,会先获取独占性的锁&…

数组结构第一周做题总结_基础练习

错误的原因是写了无参构造函数但是没有实现 id:8 A. 月份查询(指针数组) 题目描述 已知每个月份的英文单词如下,要求创建一个指针数组,数组中的每个指针指向一个月份的英文字符串,要求根据输入的月份数字输出相应的…

盘点java8 stream中隐藏的函数式接口

shigen坚持更新文章的博客写手,记录成长,分享认知,留住感动。个人IP:shigen 提到函数式接口,最常见的就是lambda表达式,IDEA也有智能的提示: 最后改成这样的就是最简洁的、IDEA希望的风格&#…

机器学习:基于机器学习的中文评论情感分析

通过机器学习技术对中文评论进行情感分析。我们使用了jieba进行中文分词,移除了停用词,并利用词袋模型(Bag of Words)和多项式朴素贝叶斯分类器对评论进行了情感分类。实验结果表明,该模型在测试集上达到了较高的准确率…

如何构建高效的中药材进存销管理系统?——运用Java SpringBoot和Vue实现库存实时监控,简化销售流程,提升药材管理效率。

🍊作者:计算机毕设匠心工作室 🍊简介:毕业后就一直专业从事计算机软件程序开发,至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长:按照需求定制化开发项目…

前端宝典二十一:前端异步编程规范手写Promise、async、await

本文主要探讨前端异步编程的处理方式、处理场景,并且手写Promise的全家桶,介绍async、await方法使用 一、异步处理方式有: 1. 回调函数 function fetchDate(callback) {setTimeout(() > {const date new Date();callback(date);}, 100…