Gibt es eine Möglichkeit, die dekomprimierte Größe einer BZ2-Datei zu bestimmen?

34

Gibt es eine Möglichkeit, die dekomprimierte Größe einer .bz2-Datei zu drucken, ohne die gesamte Datei zu dekomprimieren?

Endolith
quelle
Es gibt also keine Metadaten zur Originaldatei in der bzip-Ausgabe? > :(
Endolith
Nicht, dass ich einen Hinweis darauf gesehen hätte. : /
Quack Quixote

Antworten:

36

Wie von anderen angemerkt, bietet bzip2 nicht viele Informationen. Aber diese Technik funktioniert - Sie haben die Datei entpacken, aber Sie werden nicht die dekomprimierten Daten auf die Festplatte zu schreiben, die eine „gut genug“ Lösung für Sie können sein:

$ ls -l foo.bz2
-rw-r--r-- 1 ~quack ~quack 2364418 Jul  4 11:15 foo.bz2

$ bzcat foo.bz2 | wc -c         # bzcat decompresses to stdout, wc -c counts bytes
2928640                         # number of bytes of decompressed data

Sie können diese Ausgabe in etwas anderes umleiten, um eine für Menschen lesbare Form zu erhalten:

$ ls -lh foo.bz2
-rw-r--r-- 1 quack quack 2.3M Jul  4 11:15 foo.bz2

$ bzcat foo.bz2 | wc -c | perl -lne 'printf("%.2fM\n", $_/1024/1024)'
2.79M
Quacksalber
quelle
9
Nun, die Berechnung dauerte nur fünf Minuten mit 100% CPU.
Endolith
2
nur? UND es würde eine Festplatte füllen? Ich habe ein komprimiertes Tarball einer alten Linux-Installation, die nur 407 Megabyte groß ist, aber für das Extrahieren meines armen alten Servers 30-45 Minuten benötigt hat. Dazu gehörte das Schreiben auf die Festplatte, aber ich muss das Skript ausführen, um die Zeit zu bestimmen.
Kommen Sie
Ich habe natürlich die kleinste Datei für den ersten Test ausgewählt. 140 MB komprimiert -> 3 GB nicht komprimiert. Die größeren Dateien sind 5 GB komprimiert ...
Endolith
heh .. lass mich wissen, wie groß die 5GBs werden ... und wie lange es dauert, es über diesen XD
Quacksalber herauszufinden
-3

Zum Lesen der .bz-Erweiterungstextdatei ohne Entpacken.

bzcat dbtax_ext_en.ttl.bz2 |zless
Shashank Motepalli
quelle
1
bzcat und zless arbeiten so nicht zusammen. Verwenden Sie "bzcat file.bz2 | less" oder "bzless file.bz2" oder, wenn Sie eine gzip-Datei haben, "zcat file.gz | less" oder "zless file.gz". In der Manpage für Zless heißt es sogar: "Zless funktioniert nicht mit komprimierten Daten, die über die Standardeingabe weitergeleitet werden. Es ist erforderlich, dass Eingabedateien als Argumente angegeben werden."
Nick Russo