/ / Extraiga la lista de nombres de archivos en un archivo zip cuando `unzip -l` - linux, unix, ksh

Extraiga la lista de nombres de archivos en un archivo zip cuando `unzip -l` - linux, unix, ksh

Cuando lo hago unzip -l zipfilename, Veo

1295627  08-22-11 07:10   A.pdf
473980  08-22-11 07:10   B.pdf
...

Solo quiero ver los nombres de los archivos. Intento esto

unzip -l zipFilename | cut -f4 -d" "

pero no creo que el delimitador sea solo " ".

Respuestas

24 para la respuesta № 1

Suponiendo que ninguno de los archivos tenga espacios en los nombres:

unzip -l filename.zip | awk "{print $NF}"

Mi salida de descompresión tiene tanto encabezado como pie de página, por lo que el script awk se convierte en:

unzip -l filename.zip | awk "/-----/ {p = ++p % 2; next} p {print $NF}"

Una versión que maneja nombres de archivos con espacios:

unzip -l filename.zip | awk "
/----/ {p = ++p % 2; next}
$NF == "Name" {pos = index($0,"Name")}
p {print substr($0,pos)}
"

93 para la respuesta № 2

La forma más fácil de hacer esto es usar el siguiente comando:

unzip -Z -1 archive.zip

o

zipinfo -1 archive.zip

Esto mostrará solo los nombres de los archivos, uno en cada línea.

Los dos comandos son exactamente equivalentes. los -Z option le dice a descomprimir que trate el resto de las opciones como opciones zipinfo. Ver las páginas del manual para abrir la cremallera y zipinfo.


6 para la respuesta № 3

Si necesita atender a los nombres de archivos con espacios, intente

unzip -l zipfilename.zip | awk -v f=4  " /-----/ {p = ++p % 2; next} p { for (i=f; i<=NF;i++) printf("%s%s", $i,(i==NF) ? "n" : OFS) }"

3 para la respuesta № 4

Utilice awk:

unzip -l zipfilename | awk "{print $4}"