Czy istnieje sposób na określenie rozmiaru zdekompresowanego pliku .bz2?

34

Czy istnieje sposób wydrukowania zdekompresowanego rozmiaru pliku .bz2 bez faktycznej dekompresji całego pliku?

endolit
źródło
Więc nie ma metadanych dotyczących oryginalnego pliku na wyjściu bzip? > :(
endolith,
nie, że widziałem odniesienie. : /
quack quixote

Odpowiedzi:

36

Jak zauważyli inni, bzip2 nie dostarcza wielu informacji. Ale ta technika działa - będziesz musiał zdekompresować plik, ale nie będziesz musiał zapisywać zdekompresowanych danych na dysk, co może być dla Ciebie „wystarczająco dobrym” rozwiązaniem:

$ 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

Możesz potokować ten wynik w coś innego, aby uzyskać czytelną dla człowieka formę:

$ 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
quack quixote
źródło
9
Obliczenie zajęło tylko pięć minut 100% procesora.
endolith
2
tylko? I to zapełni dysk? Mam skompresowany plik archiwum starej instalacji linuksa, który ma tylko 407 megabajtów, ale wyodrębnienie zajęło mojemu biednemu starożytnemu serwerowi 30-45 minut. które obejmowały zapis na dysk, jednak będę musiał uruchomić ten skrypt, aby go zmierzyć. wróć do ciebie za pół godziny ... :)
quack quixote
Oczywiście do pierwszego testu wybrałem najmniejszy plik. 140 MB skompresowany -> 3 GB nieskompresowany. Większe pliki są skompresowane o 5 GB ...
endolith
heh .. lemingi znać jak duży 5GBs okazać się ... i jak długo to trwa, aby zrozumieć to za pomocą tego XD
szarlatan Kichot
-3

Aby odczytać plik tekstowy rozszerzenia .bz bez rozpakowywania.

bzcat dbtax_ext_en.ttl.bz2 |zless
Shashank Motepalli
źródło
1
bzcat i zless nie działają tak razem. Użyj „bzcat file.bz2 | less” lub „bzless file.bz2”, a jeśli masz plik spakowany gzip, „zcat file.gz | less” lub „zless file.gz”. W rzeczywistości strona podręcznika dla Zlessa zauważa, że ​​„Zless nie działa ze skompresowanymi danymi przesyłanymi do niego przez standardowe wejście; wymaga, aby pliki wejściowe były określone jako argumenty”.
Nick Russo