删除空(零字节)文件

时间:2009-02-13 01:45:46

标签: command-line file batch-file

使用纯Mac OS X原生工具查找和删除空(零字节)文件的最简单/最佳方法是什么?

5 个答案:

答案 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)

一个非常简单的解决方案,如果您想在一个特定文件夹中执行此操作:

  1. 进入文件夹,右键单击 -> 查看 -> 作为列表。
  2. 现在您会发现所有文件都以列表形式列出。单击必须是列标题的“大小”。这将根据文件大小对所有文件进行排序。
  3. 最后,您可以找到所有最后零字节的文件。只需选择并删除它!