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 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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.