Wenn ich in meiner Bash-Befehlszeile verwende, unzip -l test.zip
erhalte ich die Ausgabe wie folgt :
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 aber nur die Zeilen mit den Dateidetails.
Ich habe versucht, mit grep wie folgt zu filtern:
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 andere Optionen mit unzip -l (ich habe die Manpage zum Entpacken überprüft und keine gefunden) oder einem anderen Tool, um dies zu tun?
Es ist mir wichtig, das Archiv nicht wirklich zu entpacken, sondern nur nachzuschauen, welche Dateien sich darin befinden.
grep
Elemente enthält, in ein Awk-Skript umgewandelt werden kann, in der Regel mit deutlich verbesserter Genauigkeit.awk 'NR >3 { if (/^ *---/) exit 0; print }'
würde die ersten drei Zeilen sowie die Fußzeile abschneiden und auch in Reichweite sein, um einfach nur den Dateinamen zu extrahieren (Hinweis:)print substr($0, 29)
.