我有一个包含40,000个文件的文件夹,全部名为1.gz> 40000.gz
我正在使用mac终端在文件夹中执行此操作
在我的终端我执行的地方:
gunzip 1.gz
它解压缩了一个文件,然后我尝试解压缩所有:
gunzip *.gz
但它抛出:
-bash: /usr/bin/gunzip: Argument list too long
因为文件太多了。
我该怎么办?
将四分之一的文件移动到一个新的临时文件夹中?移动它们非常快。然后,您可以将一些文件从temp文件夹移回原始文件夹。实际上,最简单的方法可能是在文件夹中使用40,000个文件创建一个临时文件夹。然后他们将很容易进出。 Gunzip似乎可以处理大约12,200个文件,但不能处理13,300个文件。因此,一次完成10,000个文件应该是轻而易举的。
使用find
:
find . -exec gunzip '{}' +
或者您可以明确查看尚未被枪杀的文件:
find . -name \*.gz -exec gunzip '{}' +
这些将为当前目录及其下的所有内容执行此操作。如果要将其限制为当前目录,请将-maxdepth 1
添加到选项中。
大括号周围的单引号可以正确处理文件和目录名称中的空格。这就是为什么xargs
在尝试解决这样的问题时会遇到问题。