删除空(零字节)文件

问题描述 投票:0回答:6

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

command-line file batch-file
6个回答
16
投票

很简单:

find . -type f -size 0 -exec rm -f '{}' +

忽略任何具有 xattr 内容的文件(假设 MacOS

find
实现):

find . -type f -size 0 '!' -xattr -exec rm -f '{}' +

也就是说,请注意,许多 xattr 并不是特别有用(例如,

com.apple.quarantine
存在于所有下载的文件中)。


9
投票

您可以通过以下方式减少运行 /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
命令。
{}
通常被引用以防止 shell 对它做任何事情;引号并不总是必需的,但 shell 引用的复杂性太复杂,无法在此处介绍,因此当有疑问时,请包含撇号:

find . -type f -size 0 -exec /bin/rm -f '{}' +

在 Linux 中,通常可以使用

-delete
提供更简短的方法。请注意,最近
find
-delete
主要是直接使用
unlink
(2) 实现的,并且不会产生无数
/bin/rm
命令,甚至不会产生
xargs
+
那样的少数命令。 Mac OS
find
还具有
-delete
-empty
原色。

find . -type f -empty -delete

要删除空(和新清空的)文件 - 目录 - 许多现代 Linux 主机可以使用这种有效的方法:

find . -empty -delete

1
投票
find /path/to/stuff -empty

如果这是您要查找的文件列表,请输入命令:

find /path/to/stuff -empty -exec rm {} \;

小心!没有任何办法可以撤销此操作!


1
投票

用途:

find . -type f -size 0b -exec rm {} ';'

使用所有其他可能的变体来限制删除的内容。


0
投票

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

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

0
投票

不需要终端或命令行以及文件或管道的文本列表来基本上“编程”作业。

使用本机 Finder“查找”任何具有 0 KB 扩展名的文件就像 1、2、3 一样简单:

(注意,你也可以添加文件名匹配,但我没有找到所有0KB的剪报)

Finder list of zero byte text clippings

这已作为“但是”报告给 Apple,错误 ID 为“反馈助手”FB13702038。

这是多年来的系统缺陷。 :-( 它毁掉了我 22 年前的一些剪报。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.