Wenn ich in meiner Bash-Befehlszeile Folgendes verwende, unzip -l test.zip
erhalte ich die folgende Ausgabe:
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
Mich interessieren allerdings nur die Zeilen mit den Dateidetails.
Ich habe versucht, die Filterung mit grep wie folgt durchzuführen:
unzip -l test.zip | grep -v Length | grep -v "\-\-\-\-" | g -v Archive | grep -v " files"
Aber es ist lang und fehleranfällig (zB ein Dateiname Archiv in dieser Liste wird gelöscht)
Gibt es mit unzip -l noch andere Optionen (ich habe die Manpage zu unzip überprüft und keine gefunden) oder ein anderes Tool dafür?
Wichtig ist mir, das Archiv nicht wirklich zu entpacken, sondern nur zu schauen, welche Dateien sich darin befinden.
Antwort1
zipinfo -1 file.zip
Oder:
unzip -Z1 file.zip
Würde nur die Dateien auflisten.
Wenn Sie dennoch die Zusatzinformationen zu jedem Dateinamen wünschen, können Sie Folgendes tun:
unzip -Zl file.zip | sed '1,2d;$d'
Oder:
unzip -l file.zip | sed '1,3d;$d' | sed '$d'
Oder (unter der Annahme von GNU head
):
unzip -l file.zip | tail -n +4 | head -n -2
Oder Sie könnten libarchive
Folgendes verwenden 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