Ideal wäre ein Fortschrittsbalken mit fester Länge, eine Datei- oder Bytezahl oder besser ein Timer, der die geschätzte verbleibende Zeit anzeigt.
zip
Das Standardverhalten scheint darin zu bestehen, für jede verarbeitete Datei eine Zeile auszudrucken, aber ich möchte nicht, dass die Informationen überladen werden, wenn ich Tausende von Dateien komprimiere. Ich möchte eine Einschätzung, wie lange es dauern wird.
Ich habe die -q
( --quiet
) -Option in Kombination mit -dg
( --display-globaldots
) ausprobiert, aber das überflutet stdout nur mit mehreren Punktzeilen und gibt keinen nützlichen Hinweis.
Ich habe auch versucht, -qdgds 10m
wie in der Manpage erwähnt, aber das gleiche Ergebnis erzielt.
Ich habe dann -db
( --display-bytes
) und -dc
( --display-counts
) ausprobiert, aber es scheint keine globale Option zu geben, daher wird sie erneut für jeden Dateinamen gedruckt.
Zuletzt habe ich es zusammen mit -q
like versucht -qdbdc
, aber das gibt einfach nichts aus.
Lustigerweise habe ich auf der Info-Zip-Site eine Manpage gefunden, in der eine -de
( --display-est-to-go
) -Option erwähnt ist, die "eine Schätzung der Zeit anzeigen soll, die erforderlich ist, um den Archivierungsvorgang abzuschließen".
Das hört sich genau so an, wie ich es möchte, aber das Problem ist, dass meine Version von zip
diese Funktion nicht hat. Ich verwende Ubuntu 14.04.1 64bit, bash-4.3.30 (1) und zip-3.00. Laut Wikipedia ist dies die neueste stabile Version von zip.
Es gibt unveröffentlichte Betaversionen auf der info-zip sourceforge-Seite, aber ich würde meine Daten lieber nicht einer Betaversion anvertrauen.
quelle
tee
. Machen Sie vor dem Start von zip eine Gesamtzählung der Dateien (mitls
oderfind -type f
) und lesen Sie während des ZIP-Vorgangs in der Protokolldatei die Anzahl der Zeilen der verarbeiteten Dateien, die bereits vorhanden sind (mitgrep
den richtigen Zeilen undwc -l
den Zeilen, die angezeigt werden sollen) zählen), so dass Ihre High-Level-Informationen so etwas wie "234/76438 Dateien verarbeitet" zeigen;pv /path/to/file | gzip > /path/to/file.gz
Antworten:
zip
kann Daten auf Standardausgabe komprimieren. Daher können Sie es mit anderen Tools wie kombinierenpv
:Entfernen Sie eine der
-bep
Optionen als Ihre Bequemlichkeit.quelle
Wenn Sie mit 7z einverstanden sind:
Dies gibt Ihnen einen Fortschrittsbalken wie diesen:
quelle
Ich habe folgendes erfolgreich angewendet:
Und das wird unten erklärt:
zip rekursiv in die [target_zip] -Datei die [folder_to_zip] -Umleitung von stderr nach stdout. Beachten Sie, dass stderr eine Zeile für jede Datei und jedes Verzeichnis enthält , die verarbeitet werden.
Pipe in pv die Zeilen mit den Dateinamen, wie sie von zip ausgegeben werden. pv wird im Zeilenmodus betrieben (der Zählfortschritt basierend auf den Zeilen und der Größe hängt auch von der Anzahl der zu erwartenden Zeilen ab - siehe Option PV man page -l ).
Die Gesamtgröße der zu erwartenden Zeilen wird durch rekursives Auflisten (ls) des [folder_to_zip] und Zählen der Zeilen ab '-' oder 'd' ermittelt, dh aller Dateien und Verzeichnisse (Verzeichnisse werden ab '/' aufgelistet) .
Das obige liefert einen genauen Prozentsatz der Fertigstellung, da 100% erreicht sind, wenn alle Dateien und Verzeichnisse verarbeitet wurden.
Das Problem bei der Antwort von pedroapero ist, dass der Fortschritt anhand der Anzahl der verarbeiteten (komprimierten) Bytes über der Gesamtanzahl der zu verarbeitenden (unkomprimierten) Bytes berechnet wird. Infolgedessen wird der Vorgang zu etwa 30% abgeschlossen (abhängig von der Kompressionsrate).
quelle