Supongamos que comenzó con un directorio sin comprimir A
, con la siguiente estructura:
$ tree A
A
└── inner_dir
├── file1.txt
└── file2.txt
1 directory, 2 files
Ahora suponga que le han proporcionado dos archivos zip 1.zip
y 2.zip
los ha derivado de A
. 1.zip
contiene solo file1.txt
y 2.zip
contiene solo file2.txt
:
# -l flag simply lists file contents
$ unzip -l 1.zip
Archive: 1.zip
Length Date Time Name
--------- ---------- ----- ----
0 2017-09-30 21:49 A/
0 2017-09-30 22:27 A/inner_dir/
0 2017-09-30 21:49 A/inner_dir/file1.txt
--------- -------
0 3 files
$ unzip -l 2.zip
Archive: 2.zip
Length Date Time Name
--------- ---------- ----- ----
0 2017-09-30 21:49 A/
0 2017-09-30 22:27 A/inner_dir/
0 2017-09-30 22:27 A/inner_dir/file2.txt
--------- -------
0 3 files
¿Qué comando puedo usar para reconstituir mediante programación el directorio descomprimido original A
a partir de la combinación de 1.zip
y 2.zip
?
Contexto:Al exportar un directorio grande desde Google Drive, el contenido se divide en un conjunto de 2 o más archivos zip. Cada archivo zip contiene un subconjunto de archivos que, cuando se toman en conjunto, reconstituyen el directorio original. Qué archivos contienen en qué zip parece ser más o menos aleatorio. Estoy buscando una solución que se generalice a n > 1 archivos zip, no solo al caso especial de exactamente 2 archivos.
Respuesta1
Mueva el conjunto de archivos que desea descomprimir a un directorio dedicado y luego use unzip
:
$ unzip '*.zip' -d combined
Archive: 1.zip
creating: combined/A/
creating: combined/A/inner_dir/
extracting: combined/A/inner_dir/file1.txt
Archive: 2.zip
extracting: combined/A/inner_dir/file2.txt
2 archives were successfully processed.
Controlar:
$ tree combined
combined
└── A
└── inner_dir
├── file1.txt
└── file2.txt
2 directories, 2 files
Respuesta2
@lcharbon, tu problema es la forma en que zip maneja la codificación no estándar.
Puedes resolverlo usando p7zip, que lo maneja mejor.
Aquí está el comando analógico usando p7zip:
7z x '*.zip' -ocombined
Puede instalar p7zip en Mac usando Brew brew install p7zip
o los administradores de paquetes de su distribución en Linux.