在 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 任务来从我们的系统中删除空文件夹和子文件夹。这样,我们计算机上就不会积累空文件夹和子文件夹。
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP