Quand je fais unzip -l zipfilename
, Je vois
1295627 08-22-11 07:10 A.pdf
473980 08-22-11 07:10 B.pdf
...
Je veux seulement voir les noms de fichiers. J'essaye
unzip -l zipFilename | cut -f4 -d" "
mais je ne pense pas que le délimiteur soit simplement " "
.
En supposant qu'aucun des fichiers ne comporte d'espaces dans les noms:
unzip -l filename.Zip | awk '{print $NF}'
Ma sortie de décompression a à la fois un en-tête et un pied de page, donc le script awk devient:
unzip -l filename.Zip | awk '/-----/ {p = ++p % 2; next} p {print $NF}'
Une version qui gère les noms de fichiers avec des espaces:
unzip -l filename.Zip | awk '
/----/ {p = ++p % 2; next}
$NF == "Name" {pos = index($0,"Name")}
p {print substr($0,pos)}
'
La façon la plus simple de procéder consiste à utiliser la commande suivante:
unzip -Z -1 archive.Zip
ou
zipinfo -1 archive.Zip
Cela répertoriera uniquement les noms de fichiers, un sur chaque ligne.
Les deux commandes sont exactement équivalentes. Le -Z
option indique à unzip de traiter le reste des options comme des options zipinfo. Voir les pages de manuel pour dézipper et zipinfo .
Si vous devez gérer les noms de fichiers avec espaces, essayez:
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) }'
Utilisez awk:
unzip -l zipfilename | awk '{print $4}'