Cómo enumerar archivos en un zip sin información adicional en la línea de comando

Cómo enumerar archivos en un zip sin información adicional en la línea de comando

En mi línea de comando bash, cuando lo uso unzip -l test.zipobtengo un resultado como este:

Archive:  test.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
   810000  05-07-2014 15:09   file1.txt
   810000  05-07-2014 15:09   file2.txt
   810000  05-07-2014 15:09   file3.txt
---------                     -------
  2430000                     3 files

Pero sólo me interesan las líneas que contienen los detalles del archivo.

Intenté filtrar usando grep de esta manera:

unzip -l test.zip | grep -v Length | grep -v "\-\-\-\-" | g -v Archive | grep -v " files"

Pero es largo y propenso a errores (por ejemplo, un nombre de archivo Archivo de esta lista se eliminará)

¿Existe alguna otra opción con unzip -l (revisé la página de manual de descomprimir y no encontré ninguna) u otra herramienta para hacerlo?

Para mí es importante no descomprimir realmente el archivo, sino simplemente mirar qué archivos hay dentro.

Respuesta1

zipinfo -1 file.zip

O:

unzip -Z1 file.zip

Enumeraría solo los archivos.

Si aún desea información adicional para cada nombre de archivo, puede hacer:

unzip -Zl file.zip | sed '1,2d;$d'

O:

unzip -l file.zip | sed '1,3d;$d' | sed '$d'

O (asumiendo GNU head):

unzip -l file.zip | tail -n +4 | head -n -2

O podrías usar libarchive's bsdtar:

$ bsdtar tf test.zip
file1.txt
file2.txt
file3.txt
$ bsdtar tvf test.zip
-rw-rw-r--  0 1000   1000   810000 Jul  5  2014 file1.txt
-rw-rw-r--  0 1000   1000   810000 Jul  5  2014 file2.txt
-rw-rw-r--  0 1000   1000   810000 Jul  5  2014 file3.txt
$ bsdtar tvvf test.zip
-rw-rw-r--  0 1000   1000   810000 Jul  5  2014 file1.txt
-rw-rw-r--  0 1000   1000   810000 Jul  5  2014 file2.txt
-rw-rw-r--  0 1000   1000   810000 Jul  5  2014 file3.txt
Archive Format: ZIP 2.0 (deflation),  Compression: none

información relacionada