Solución:
no le gustará, pero: descomprimir todo en una carpeta de trabajo en el orden correcto y luego comprimir el resultado es la forma más efectiva.
de lo contrario, terminará con muchos ciclos de CPU desperdiciados:
- suponga que su resultado va a ‘first.zip’
- todos los archivos de ‘2.zip’, ‘3.zip’, etc. deben descomprimirse y luego comprimirse nuevamente en ‘first.zip’
- en ‘2.zip’ existe un archivo ‘foobar.txt’ y en ‘3.zip’ existe otro archivo ‘foobar.txt’. fusionarlo de la forma en que desea fusionarlo conduce a ‘comprimirlo X veces’
- el índice de un .zip está al final del archivo: agrega más contenido (en el medio del
.zip actualizando un archivo en el medio) y todo el archivo debe ser reescrito
Entonces, en mi humilde opinión, solo usa ‘descomprimir’ Wiseley:
% mkdir all
% for x in *.zip ; do unzip -d all -o -u $x ; done
% zip -r all.zip all
el orden de descompresión es importante, no conozco el patrón de sus nombres zip, pero extraería primero el archivo zip más nuevo, la opción ‘-u’ de descomprimir sobrescribe solo los archivos si son más nuevos o crea archivos si no ya ahí. como resultado, descomprimirá solo los archivos más recientes y comprimirá el resultado solo una vez.
Puede que no sea lo que está buscando, pero la herramienta de compilación Ant gratuita incluye la capacidad de fusionar archivos Zip.
https://ant.apache.org/manual/Tasks/zip.html
Simplemente use la opción -g de ZIP, donde puede agregar cualquier número de archivos ZIP en uno (sin extraer los antiguos). Esto le ahorrará mucho tiempo.
También echa un vistazo a zipmerge