上一篇 下一篇 分享链接 返回 返回顶部

如何在Linux服务器中查找和删除空目录?

发布人:Minchunlin 发布时间:2021-02-02 10:39 阅读量:1507

很多时候,空目录在Linux服务器的文件系统中会变得杂乱无章,要手动搜索并删除每一个空目录成为一项艰巨的任务。在Linux服务器中使用rmdir(删除目录)命令来删除空文件夹。

该命令使用起来相当简单,基本语法是。

$ rmdir <empty folder name1> <empty folder name2> ... <empty folder nameN>

这里的'empty folder name1'、'empty folder name2'等都是包括完整路径的文件夹名称。如果文件夹在同一个目录中,那么,你可能已经知道,没有必要写下完整的路径。

你也可以使用通配符表达式来删除名称中带有模式的空目录。例如,要删除名称中带有子串 "test"的空目录,运行。

$ rmdir *test*

然而,要使用rmdir,我们总是需要指定每个要删除的空目录的名称(或完整路径)。rmdir中没有递归查找空目录然后删除它们的选项。

在这种情况下,我们利用find命令的功能。

在Linux中查找和删除空目录

find命令用于在Linux中根据不同的参数如文件名、大小、类型等来搜索文件和文件夹。我们将使用find命令递归地确定空目录,然后执行rmdir来删除找到的目录。

使用参数'-empty'查找空对象,指定'-type d'只查找目录。

$ find path_of_folder_to_search -type d -empty

要在同一文件夹中递归查找空目录,运行。

$ find . -type d -empty

现在,由于我们已经有了递归找到的空目录列表,我们使用 find 命令的 '-exec' 参数在它们上面运行rmdir。

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

占位符{}替换了找到的目录列表中的每一个条目,'\;'表示要执行的命令结束。

然而,即使这样,它也只是进行一轮搜索并删除空目录,但不会删除第一轮删除后变成空的目录。

为了解决这个问题,我们只需使用'-delete'选项,它会反复删除所有空目录,直到顶层目录。

$ find . -type d -empty -exec -delete

这就是我们在Linux服务器中如何递归删除所有空目录的方法。

目录结构
全文