Linux/Unix:查找和删除所有空目录和文件
时间:2020-01-09 10:40:13 来源:igfitidea点击:
如何查找类似Linux/Apple OS X/BSD/Unix的操作系统上的所有空文件和目录,并一次性删除它们?
您需要结合使用find和rm命令。
GNU/find可以通过-delete选项删除文件。
请注意,Unix/Linux文件名可以包含空格和换行符,这种默认行为经常会出现问题。
包含rm命令的许多实用程序均会错误地处理包含空格和/或换行符的文件名。
为了避免出现问题,您需要传递-print0选项来查找命令,并将-0选项传递给xargs命令,以防止出现此类问题。
如何计算所有空文件或目录?
语法如下:
## count empty dirs only ## find /path/ -empty -type d | wc -l ## count empty files only ## find /path/ -empty -type f | wc -l
其中:
-empty
:仅查找空文件,并确保它是常规文件或目录。-type d
:仅匹配目录。-type f
:仅匹配文件。-delete
:删除文件。始终在find命令的末尾放置-delete选项,因为find命令行被评估为表达式,因此,首先放置-delete将使find尝试删除指定起点以下的所有内容。
当您需要在单个命令中清理空目录和文件时,这很有用。
方法2:使用xargs和rm/rmdir命令查找和删除所有内容
使用xargs命令查找和删除所有空目录的语法如下:
## secure and fast version ### find /path/to/dir/ -type d -empty -print0 | xargs -0 -I {} /bin/rmdir "{}"
或者
## secure but may be slow due to -exec ## find /path/to/dir -type d -empty -print0 -exec rmdir -v "{}" \;
删除所有空文件的语法如下:
## secure and fast version ### find /path/to/dir/ -type f -empty -print0 | xargs -0 -I {} /bin/rm "{}"
或者
## secure but may be slow due to -exec ## find . -type f -empty -print0 -exec rm -v "{}" \;
请参见手册页xargs(1)