Dans ma ligne de commande bash, lorsque j'utilise unzip -l test.Zip
J'obtiens la sortie comme ceci:
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 du 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 à erreur (par exemple, un nom de fichier Archive dans cette liste sera supprimé)
Existe-t-il d'autres options avec unzip -l (j'ai vérifié la page de manuel unzip et je n'en ai pas trouvé) ou un autre outil pour le faire?
Il est important pour moi de ne pas vraiment décompresser l'archive mais simplement de regarder quels fichiers sont à l'intérieur.
zipinfo -1 file.Zip
Ou:
unzip -Z1 file.Zip
N'afficherait 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 GNU head
):
unzip -l file.Zip | tail -n +4 | head -n -2
Ou vous pouvez utiliser le libarchive
bsdtar
:
$ bsdtar tf test.Zip
file1.txt
file2.txt
file3.txt
$ bsdtar tvf test.Zip
-rw-rw-r-- 0 1000 1000 810000 Jul 5 2014 file1.txt
-rw-rw-r-- 0 1000 1000 810000 Jul 5 2014 file2.txt
-rw-rw-r-- 0 1000 1000 810000 Jul 5 2014 file3.txt
$ bsdtar tvvf test.Zip
-rw-rw-r-- 0 1000 1000 810000 Jul 5 2014 file1.txt
-rw-rw-r-- 0 1000 1000 810000 Jul 5 2014 file2.txt
-rw-rw-r-- 0 1000 1000 810000 Jul 5 2014 file3.txt
Archive Format: Zip 2.0 (deflation), Compression: none