Comment lister des fichiers dans un zip sans informations supplémentaires en ligne de commande

37

Dans ma ligne de commande bash, lorsque j'utilise, unzip -l test.ziple résultat est le suivant:

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

Mais je ne suis intéressé que par les lignes contenant les détails du fichier.

J'ai essayé de faire un filtrage en utilisant grep comme ceci:

unzip -l test.zip | grep -v Length | grep -v "\-\-\-\-" | g -v Archive | grep -v " files"

Mais il est long et sujet aux erreurs (par exemple, un nom de fichier, les archives de cette liste seront supprimées)

Existe-t-il d'autres options avec unzip -l (j'ai vérifié la page de manuel unzip et n'en ai trouvé aucun) ou un autre outil pour le faire?

Il est important pour moi de ne pas décompresser l'archive mais de regarder quels fichiers se trouvent à l'intérieur.

рüффп
la source
La réponse acceptée est bien meilleure que cela. mais je veux faire remarquer que tout ce qui a plusieurs greppeut être refactoré dans un script Awk, généralement avec beaucoup plus de précision. awk 'NR >3 { if (/^ *---/) exit 0; print }'pourrait couper les trois premières lignes ainsi que le pied de page, et serait également à portée de main pour extraire facilement que le nom du fichier (indice:) print substr($0, 29).
triplee
Oui, je suis tout à fait d’accord, c’est précisément la raison pour laquelle je pose cette question précise: obtenir une solution meilleure et viable.
рüффп

Réponses:

55
zipinfo -1 file.zip

Ou:

unzip -Z1 file.zip

Ne listerait que les fichiers.

Si vous voulez toujours les informations supplémentaires pour chaque nom de fichier, vous pouvez faire:

unzip -Zl file.zip | sed '1,2d;$d'

Ou:

unzip -l file.zip | sed '1,3d;$d' | sed '$d'

Ou (en supposant que GNU head):

unzip -l file.zip | tail -n +4 | head -n -2
Stéphane Chazelas
la source
merci puissant sed ... exactement ce que je voulais; De plus, l'outil zipinfo est intéressant, je ne le savais pas.
Jeudi
Est-il possible d'ignorer les répertoires? unzip -Z1 zipfile.zipaffichera: répertoire / et répertoire / fichier.extension (Remarque: les noms de répertoires avec. est probable, donc l'ajout | grep .ne fonctionne pas)
Matt