![查看所有 UNIX 相关文章/常见问题解答](https://www.alaica.com/wp-content/uploads/linux-23.gif)
如何找出 Linux / Apple macOS (OS X) / *BSD / 类 Unix 操作系统上的所有空文件和目录并一次性删除它们?
您需要使用 find 和 rm 命令的组合。GNU/find 有一个删除文件的选项-delete。请注意,Unix / Linux 文件名可以包含空格和换行符,这种默认行为通常会出现问题;许多实用程序(包括 rm 命令/rmdir 命令或mv 命令)错误地处理包含空格和/或换行符的文件名。为了避免出现问题,您需要将-print0选项传递给 find 命令并将-0选项传递给 xargs 命令,这可以防止此类问题。
教程详情 | |
---|---|
难度级别 | 中间的 |
根权限 | 不 |
要求 | Linux 或 Unix 终端 |
类别 | 文件管理 |
操作系统兼容性 | BSD • Linux • macOS • Unix |
美东时间。阅读时间 | 3分钟 |
警告!如果执行这些示例,您的计算机可能会崩溃。某些后台进程(守护程序)可能使用空文件作为锁定文件或作为锁定(chroot)守护程序的默认位置。不要删除这些文件。它们通常位于/var/、/lib/等重要位置。不要尝试用 ls 命令输出来查找和删除任何文件[1]。
方法#1:仅使用 find 命令查找并删除所有内容
使用 BSD 或 GNU find 命令查找并删除所有空目录的语法如下:
查找 /路径/到/ dir -empty -type d -delete
查找并删除所有空文件:
查找 /路径/到/ dir -empty -type f -delete
删除空目录
在此示例中,从 ~/Downloads/ 中删除空目录
找到〜/下载/ -empty -type d -delete
删除空文件
在此示例中,从 ~/Downloads/ 中删除空文件
查找〜/下载/ -empty -type -delete
会话示例:
![图01:删除空目录和文件。](https://www.alaica.com/wp-content/uploads/linux-12.jpg)
图01:删除空目录和文件。
如何统计所有空文件或目录?
语法如下:
## 仅计算空目录 ## find / path / -empty -type d | 厕所 -l ## 仅计算空文件 ## find / path / -empty -type f | 厕所 -l
在哪里,
- -empty:只查找空文件并确保它是常规文件或目录。
- -type d: 只匹配目录。
- -type f:仅匹配文件。
- -delete: 删除文件。始终将-delete选项放在 find 命令的末尾,因为 find 命令行被评估为表达式,因此首先放置 -delete 将使 find 尝试删除指定起点以下的所有内容。
当您需要在单个命令中清理空目录和文件时,这非常有用。
方法#2:使用 xargs 和 rm/rmdir 命令查找并删除所有内容
使用 xargs 命令查找并删除所有空目录的语法如下:
##安全快速版本### find / path / to / dir / -type d -empty -print0 | xargs -0 -I { } / bin / rmdir “{}”
或者
## 安全,但由于 -exec 可能会很慢 ## find / path / to / dir -type d -empty -print0 -exec rmdir -v "{}" ;
删除所有空文件的语法如下:
## 安全快速版本 ### find / path / to / dir / -type f -empty -print0 | xargs -0 -I { } / bin / rm “{}”
或者
## 安全,但由于 -exec ## find可能会很慢。-type f -empty -print0 -exec rm -v "{}" ;
加起来
本页介绍了如何使用 find 命令和 xargs 命令来查找和删除 Linux、macOS、*BSD 和类 Unix 系统下的所有空文件或目录(也称为文件夹)。有关详细信息,请使用 man 命令或 help 命令参阅以下手册页。例如:
$ man find
$ man rmdir
$ man xargs
$ man rm
也可以看看
- ParsingLs – 为什么不应该解析 ls 命令的输出。