在 Linux 中删除空文件和目录
概述
我们将学习如何在 Linux 中删除空目录和空文件。
空目录不占用任何磁盘空间,但保持其整洁是有益的。我们应该定期清理旧文件和文件夹。
本教程中的所有说明均适用于 Linux 系统。它们不适用于 Windows。
删除目录中的空文件
您可以使用 `find` 命令删除现有文件夹中的所有空文件。
$ find . -type f -empty -print -delete
要删除空目录,我们首先需要在指定文件夹中搜索所有空文件夹,然后将其删除。
要查找当前目录中的所有空目录,请使用以下命令:find. −type d −empty −print | xargs rm −rf。添加 −delete 选项可删除它们。
我们举个例子来更好地解释这个概念。
可以考虑一个同时包含空和非空文件的目录。这里,以 data-filename 为前缀的文件是非空文件,以 empty 为前缀的文件是空文件。
|-- data-file1 |-- data-file2 |-- empty-file1 |-- empty-file2 |-- empty-file3 |-- empty file 4 |-- mydir1 | |-- data-file3 | `-- empty-file5 |-- mydir2 | |-- data-file4 | `-- empty-file6 `-- mydir3 `-- mydir4 `-- mydir5
我们现在在这些目录中运行上述命令。它将递归删除所有空文件 - 这意味着目录 mydir1 和 mydird2 中的 empty-file4 和 empty-file5 也将被删除。
$ find . -type f -empty -print -delete ./empty-file1 ./empty-file2 ./empty-file3 ./mydir1/empty-file5 ./mydir2/empty-file6 ./empty file 4
让我们仔细看看输出。我们会发现此操作从目录中删除了名称包含空格的文件。
它只删除了空文件,而没有删除 mydir1、mydir2、mydir4 和 mydir6 等目录。
非递归删除空文件
到目前为止,我们已经讨论了如何递归地从目录中删除空文件。但是,如果我们想从当前目录中删除空文件呢?
find 实用程序有一个选项 -maxDepth,它定义了 find 实用程序搜索文件的最大深度。
使用 -maxdepth1,'f'(文件)命令将仅在当前目录中搜索文件。
$ find . -maxdepth 1 -type f -empty -print -delete ./empty-file1 ./empty-file2 ./empty-file3 ./empty file 4
删除所有空目录
我们可以在 find 命令中使用 -type f 来搜索文件 -
$ find . -type d -empty -print -delete
它将从当前目录中删除所有空目录。
让我们在保存脚本的目录中运行此命令。
$ find . -type d -empty -print -delete ./mydir3 ./mydir4/mydir5 ./mydir4
删除 mydir5 文件夹后,mydir3 不再是空目录;相反,它包含来自 mydir2 的文件。
非递归删除空目录
通过使用 −maxdepth 1,find 实用程序仅在当前工作目录中搜索空目录。
$ find . -maxdepth 1 -type d -empty -print -delete ./mydir3
同时删除空文件和目录
现在终于到了将我们目前所学知识结合起来的最佳时机。运行一个命令,删除当前目录中的所有空文件和文件夹。
我们将使用 find 实用程序的逻辑或 (OR) 运算符 (-o) 来搜索空文件或空目录。
$ find . -type d -empty -print -delete -o -type f -empty -print -delete ./empty-file1 ./empty-file2 ./empty-file3 ./mydir1/empty-file5 ./mydir2/empty-file6 ./mydir3 ./mydir4/mydir5 ./mydir4
-o 选项将文件名中的命令拆分为两部分。第一部分,-type d -empty - print -delete,删除所有空目录;第二部分,-type f -empty - print - delete,删除所有空文件。
我们可以使用 -maxdepth 0 递归删除空文件/目录。
$ find . -maxdepth 1 -type d -empty -print -delete -o -type f -empty -print -delete ./empty-file1 ./empty-file2 ./empty-file3 ./mydir3
总结
到这里,我们了解了空文件、空文件夹以及如何在 Linux 中删除它们。我们研究了两种不同的文件删除方法——递归和非递归。
在删除目录之前,务必检查所有目录并删除所有不必要的目录。在上面讨论的所有示例中,我们可以使用 -recurse 选项来检查所有要删除的目录。
最佳做法是设置一个 cron 任务来从系统中删除空文件夹及其子文件夹。这样,我们的电脑上就不会堆积空文件夹及其子文件夹了。
相关文章
有用资源
linux 参考教程 - 该教程包含有关 linux 的更多信息:https://www.cainiaomax.com/linux/

