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.
command-line
filenames
zip
рüффп
la source
la source
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)
.Réponses:
Ou:
Ne listerait que les fichiers.
Si vous voulez toujours les informations supplémentaires pour chaque nom de fichier, vous pouvez faire:
Ou:
Ou (en supposant que GNU
head
):la source
unzip -Z1 zipfile.zip
affichera: répertoire / et répertoire / fichier.extension (Remarque: les noms de répertoires avec. est probable, donc l'ajout| grep .
ne fonctionne pas)