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.
command-line
filenames
zip
рüффп
quelle
quelle
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)
.Antworten:
Oder:
Würde nur die Dateien auflisten.
Wenn Sie immer noch die zusätzlichen Informationen für jeden Dateinamen benötigen, können Sie Folgendes tun:
Oder:
Oder (unter der Annahme von GNU
head
):quelle
unzip -Z1 zipfile.zip
wird ausgeben: directory / und directory / file.extension (Hinweis: Verzeichnisnamen mit. sind wahrscheinlich, also| grep .
funktioniert das Hinzufügen von a nicht)