目录
一、需求
二、实现方式
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 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。