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

37

En mi línea de comando bash, cuando uso unzip -l test.zipobtengo el resultado de esta manera:

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 solo me interesan las líneas que contienen los detalles del archivo.

Traté de filtrar usando grep así:

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

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

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

Es importante para mí no descomprimir realmente el archivo, sino solo mirar qué archivos hay dentro.

рüффп
fuente
La respuesta aceptada es mucho mejor que esto; pero quiero comentar que cualquier cosa con múltiples grepse puede refactorizar en un script Awk, generalmente con una precisión mucho mejor. awk 'NR >3 { if (/^ *---/) exit 0; print }'recortaría las primeras tres líneas, así como el pie de página, y también estaría al alcance de extraer fácilmente solo el nombre del archivo (pista:) print substr($0, 29).
tripleee
Sí, estoy totalmente de acuerdo, es exactamente por eso que hago esa pregunta específica: tener una solución mejor y viable.
рüффп

Respuestas:

55
zipinfo -1 file.zip

O:

unzip -Z1 file.zip

Solo enumeraría los archivos.

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

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

O:

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

O (suponiendo GNU head):

unzip -l file.zip | tail -n +4 | head -n -2
Stéphane Chazelas
fuente
gracias poderoso sed ... exactamente lo que quería; También la herramienta zipinfo es interesante, no lo sabía.
Febrero
¿Hay alguna manera de ignorar los directorios? unzip -Z1 zipfile.zipmostrará: directorio / y directorio / archivo.extensión (Nota: es probable que los nombres de directorio con., por lo que agregar un | grep .no funciona)
Matt