Pregunta ¿Cómo obtener una lista de directorios en un zip?


Estoy buscando una forma de listar los directorios en un archivo zip en bash bajo Linux. Descubrí que hay una aplicación llamada zipinfo, que puede enumerar las rutas en el zip (sin ningún ruido adicional para tener que analizar a través de (zipinfo -1 foo.zip), Opuesto a unzip -l foo.zip) Sin embargo, esto no es lo suficientemente bueno y me pregunto si hay una mejor manera.


5
2017-09-10 17:42


origen


Respuestas:


Para listar solo directorios:

unzip -l foo.zip "*/"

Salida (por ejemplo):

Archivo: foo.zip
  Longitud Fecha Hora Nombre
--------- ---------- ----- ----
        0 2015-09-10 20:10 trabajo /
        0 2015-08-31 10:45 trabajo / prueba1 /
        0 2015-08-31 10:50 trabajo / prueba1 / cc /
        0 2015-08-31 10:45 work / test1 / dd /
        0 2015-08-31 10:45 trabajo / prueba1 / aa /
        0 2015-08-31 10:45 trabajo / prueba1 / bb /
        0 2015-09-09 21:17 trabajo / tmp /
        0 2015-08-23 18:49 trabajo / tmp / trabajo /
        0 2015-09-08 19:33 work / tmp / work / loop /
        0 2015-08-15 16:00 trabajo / tmp / trabajo / 1 /
        0 2015-08-15 16:00 trabajo / 1 /
        0 2015-08-24 18:40 trabajo / dir /
        0 2015-09-05 18:07 trabajar / renombrar /
--------- -------
        0 13 archivos

o usar

zipinfo -1 foo.zip "*/"

Salida (por ejemplo):

trabajo/
trabajo / prueba1 /
trabajo / test1 / cc /
trabajo / test1 / dd /
trabajo / test1 / aa /
trabajo / prueba1 / bb /
trabajo / tmp /
trabajo / tmp / trabajo /
trabajo / tmp / trabajo / loop /
trabajo / tmp / trabajo / 1 /
trabajo / 1 /
trabajo / dir /
trabajar / renombrar /

7
2017-09-10 17:53



Puedes probar la tubería unzip -l a awk Me gusta esto:

unzip -l foo.zip | awk '/\/$/ { print $NF }'

Todos los directorios en el unzip -l final de salida con una barra y $NF imprime sólo la ruta del directorio.


0
2017-09-10 17:48