Desempaquetar un archivo zip grande sobre sí mismo

Desempaquetar un archivo zip grande sobre sí mismo

Quiero descomprimir un archivo de 20 Gb, pero no tengo otros 20-30 Gb de espacio libre en el disco duro. ¿Es posible descomprimir este archivo sobre sí mismo?

De modo que ese archivo zip se eliminará después de descomprimirlo y tendré el contenido descomprimido.

Respuesta1

No hay -mun interruptor (mover) para descomprimir como sí lo hay para zip, pero puede extraer los archivos del archivo uno por uno y eliminarlos inmediatamente después de extraerlos.

No sé mucho sobre OS X, pero esto funciona con Bash en Ubuntu:

IFS=$'\n'

for file in `zipinfo -Z1 ZIPFILE`; do
    unzip ZIPFILE $file && zip -d ZIPFILE $file
done

rm ZIPFILE

unset IFS
  • IFS=$'\n'establece el separador de campo interno en nueva línea, por lo que los nombres de archivos que contienen espacios se manejarán correctamente.

  • zipinfo -Z1 ZIPFILEenumera el contenido deARCHIVO ZIP, uno por línea.

  • for file in `...`; do ??? donerecorre la salida de ..., establece la variablearchivoa una línea la salida del comando y se ejecuta ???.

  • unzip ZIPFILE $file && zip -d ZIPFILE $fileextrae el archivo especificado enarchivodel archivo zip y lo elimina del archivo ( zip -d).

    Aquí, &&se asegura de que el segundo comando se ejecute solo si el primero finalizó exitosamente.

  • rm ZIPFILEelimina el archivo (vacío).

  • unset IFSRestaura el valor predeterminado del separador de archivos interno.

Respuesta2

Creo que no es posible. En tu caso necesitarás un medio de almacenamiento extra para enviar el contenido extraído; o mueva el zip y extráigalo a su disco duro.

información relacionada