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 № 1Suponiendo 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}"