使用纯Mac OS X原生工具查找和删除空(零字节)文件的最简单/最佳方法是什么?
答案 0 :(得分:14)
足够简单:
find . -type f -size 0 -exec rm -f '{}' +
忽略任何包含xattr内容的文件(假设MacOS find
实现):
find . -type f -size 0 '!' -xattr -exec rm -f '{}' +
尽管如此,请注意许多xattrs并不是特别有用(例如,所有下载的文件都存在com.apple.quarantine
)。
答案 1 :(得分:8)
您可以通过以下方式降低运行/ bin / rm的潜在巨大数量的货叉:
find . -type f -size 0 -print0 | xargs -0 /bin/rm -f
上面的命令非常便于携带,可以在大多数Unix版本上运行,而不仅仅是Linux机器上运行,并且可以在Unix版本上运行数十年。对于长文件列表,可以执行多个/bin/rm
命令以防止列表超出命令行长度限制。
使用+
中的find
来替换最近常用操作系统中的xargs
来替换/bin/rm
中最常用的样式仍然适用于其他操作系统,可以实现类似的效果find
以外的行动。在这种情况下,/bin/rm
将处理将真正长文件列表拆分为单独的{}
命令。通常引用find . -type f -size 0 -exec /bin/rm -f '{}' +
来防止shell对其做任何事情;引号并不总是必需的,但是shell引用的复杂性太过于涉及到这里,所以如果有疑问,请加入撇号:
-delete
在Linux中,通常使用find
提供简短的方法。请注意,最近-delete
的{{1}}主要版本直接使用unlink
(2)实现,并且不会产生大量/bin/rm
命令,甚至不会产生{{1}的命令}和xargs
做。 Mac OS +
也有find
和-delete
原色。
-empty
要踩空(和新清空的)文件 - 目录 - 许多现代Linux主机都可以使用这种有效的方法:
find . -type f -empty -delete
答案 2 :(得分:1)
find /path/to/stuff -empty
如果这是您要查找的文件列表,请输入命令:
find /path/to/stuff -empty -exec rm {} \;
小心!没有办法撤消这个!
答案 3 :(得分:1)
使用:
find . -type f -size 0b -exec rm {} ';'
包含所有其他可能的变体,以限制删除的内容。
答案 4 :(得分:0)
一个非常简单的解决方案,如果您想在一个特定文件夹中执行此操作: