Dans ma ligne de commande bash, lorsque j'utilise, unzip -l test.zip
le 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.
grep
peut ê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)
.