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.
command-line
filenames
zip
рüффп
fuente
fuente
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)
.Respuestas:
O:
Solo enumeraría los archivos.
Si aún desea la información adicional para cada nombre de archivo, puede hacer lo siguiente:
O:
O (suponiendo GNU
head
):fuente
unzip -Z1 zipfile.zip
mostrará: directorio / y directorio / archivo.extensión (Nota: es probable que los nombres de directorio con., por lo que agregar un| grep .
no funciona)