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

本文主要是介绍linux组合命令:删除一个目录树中所有的空目录(包括嵌套空目录),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

一、需求

二、实现方式

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 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


这篇关于linux组合命令:删除一个目录树中所有的空目录(包括嵌套空目录)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1128729

相关文章

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

docker如何删除悬空镜像

《docker如何删除悬空镜像》文章介绍了如何使用Docker命令删除悬空镜像,以提高服务器空间利用率,通过使用dockerimage命令结合filter和awk工具,可以过滤出没有Tag的镜像,并将... 目录docChina编程ker删除悬空镜像前言悬空镜像docker官方提供的方式自定义方式总结docker

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

使用Python在Excel中插入、修改、提取和删除超链接

《使用Python在Excel中插入、修改、提取和删除超链接》超链接是Excel中的常用功能,通过点击超链接可以快速跳转到外部网站、本地文件或工作表中的特定单元格,有效提升数据访问的效率和用户体验,这... 目录引言使用工具python在Excel中插入超链接Python修改Excel中的超链接Python

Linux环境变量&&进程地址空间详解

《Linux环境变量&&进程地址空间详解》本文介绍了Linux环境变量、命令行参数、进程地址空间以及Linux内核进程调度队列的相关知识,环境变量是系统运行环境的参数,命令行参数用于传递给程序的参数,... 目录一、初步认识环境变量1.1常见的环境变量1.2环境变量的基本概念二、命令行参数2.1通过命令编程

Linux之进程状态&&进程优先级详解

《Linux之进程状态&&进程优先级详解》文章介绍了操作系统中进程的状态,包括运行状态、阻塞状态和挂起状态,并详细解释了Linux下进程的具体状态及其管理,此外,文章还讨论了进程的优先级、查看和修改进... 目录一、操作系统的进程状态1.1运行状态1.2阻塞状态1.3挂起二、linux下具体的状态三、进程的

Linux编译器--gcc/g++使用方式

《Linux编译器--gcc/g++使用方式》文章主要介绍了C/C++程序的编译过程,包括预编译、编译、汇编和链接四个阶段,并详细解释了每个阶段的作用和具体操作,同时,还介绍了调试和发布版本的概念... 目录一、预编译指令1.1预处理功能1.2指令1.3问题扩展二、编译(生成汇编)三、汇编(生成二进制机器语