“-bash: /usr/bin/zip: Argument list too long” 解决方法

今天我在服务器上对一个目录下的图片打包的时候, 执行zip命令后,程序运行了一小会儿就停止了,并报错。

错误的提示:”-bash: /usr/bin/zip: Argument list too long”

造成此错误的原因是我该目录下的图片数量太多, 多达近20W张图片。

在shell下, 参数列表是有长度限制的, 任何执行语句都是如此。 例如我输入 “ls images/*.jpg” 会出现同样的错误, shell试图去寻找所有的jpg文件并且将它们作为参数传给ls,这就导致文件名的长度或者文件数量超出了限制。

文件数量太多, 要想办法不让它们一次全部传递, 一次检查一个文件并将它压缩。代码如下:

报错的shell:

zip -r images.zip images/*.jpg

修改后正常执行的shell:

find images/ -name '*.jpg' -print | zip images.zip -@

参考:Zip gives error “-bash: /usr/bin/zip: Argument list too long”

发表评论

电子邮件地址不会被公开。 必填项已用*标注