【问题标题】:MacOs - Decompressing a large number of .gz filesMacOs - 解压大量 .gz 文件
【发布时间】:2018-09-10 14:01:40
【问题描述】:

我有一个包含 40,000 个文件的文件夹,全部命名为 1.gz > 40000.gz

我正在使用mac终端在文件夹中执行此操作

我在终端中执行的位置:

gunzip 1.gz

它解压了一个文件,然后我尝试全部解压:

gunzip *.gz

但它会抛出:

-bash: /usr/bin/gunzip: Argument list too long

因为文件太多。

我应该在这里做什么?

【问题讨论】:

  • 你能把一半的文件移动到一个新的临时文件夹吗?移动它们非常快。然后你可以将一些从临时文件夹中返回到原始文件夹。实际上,最简单的方法可能是在包含 40,000 个文件的文件夹内创建一个临时文件夹。这样他们就很容易进出。
  • 我刚刚进行了测试,gunzip 可以处理 12,200 个文件。但它对我来说不起作用 13,200 个文件,因此截止时间在 12,200 到 13,200 个文件之间。所以如果你使用我的方法,你需要一次做 1/4。

标签: macos terminal command compression


【解决方案1】:

将四分之一的文件移动到新的临时文件夹中?移动它们非常快。然后您可以将一些从临时文件夹移回原始文件夹。实际上,最简单的方法可能是在包含 40,000 个文件的文件夹内创建一个临时文件夹。然后他们将很容易进出。 Gunzip 似乎可以处理大约 12,200 个文件,但不能处理 13,300 个文件。因此,一次处理 10,000 个文件应该是轻而易举的事。

【讨论】:

  • @Kay,Mark Adler 有一个更好的解决方案。抱歉,我没有想到这一点,希望我的方法没有给您带来任何问题。再次抱歉。
【解决方案2】:

使用find:

find . -exec gunzip '{}' +

或者您可以明确查找尚未压缩的文件:

find . -name \*.gz -exec gunzip '{}' +

这些将对当前目录及以下目录中的所有内容执行此操作。如果你想限制到当前目录,在选项中添加-maxdepth 1

大括号周围的单引号是为了正确处理文件和目录名称中的空格。这就是为什么xargs 在尝试解决此类问题时会遇到问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 2014-07-31
    相关资源
    最近更新 更多