En mi línea de comando bash, cuando uso unzip -l test.zip
obtengo 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.
grep
se 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)
.