Hoy una entrada rápida con un pequeño «truco» para extraer únicamente un archivo de un ZIP que contiene varios directorios y archivos. En primer lugar visualizamos el contenido del zip:
$ unzip -l test.zip Archive: test.zip Length Date Time Name --------- ---------- ----- ---- 0 2016-06-05 21:41 test/ 0 2016-06-05 21:41 test/foo/ 0 2016-06-05 21:41 test/foo/bar/ 0 2016-06-05 21:41 test/foo/bar/test3.txt 0 2016-06-05 21:41 test/foo/bar/test2.txt 0 2016-06-05 21:41 test/foo/bar/test1.txt --------- ------- 0 6 files
Una vez localizado el archivo, simplemente pasamos como parámetro la ruta interna del archivo dentro del zip y después la ruta en la que lo queremos desempaquetar:
$ unzip -j test.zip "test/foo/bar/test2.txt" -d . Archive: test.zip extracting: ./test2.txt
Si no queremos crear la estructura de directorios sino únicamente extraer el archivo utilizamos -j
, si quitamos este parámetro se crearán los directorios «test/foo/bar» a partir de la ruta que indiquemos:
$ unzip test.zip "test/foo/bar/test2.txt" -d . Archive: test.zip extracting: ./test/foo/bar/test2.txt $ pwd /tmp $ ls -l /tmp/test/foo/bar/test2.txt -rw-rw-r-- 1 foo foo 0 Jun 5 21:41 /tmp/test/foo/bar/test2.txt