Bir .bz2 dosyasının sıkıştırılmış boyutunu belirlemenin bir yolu var mı?


34

Her şeyi açmadan, bir .bz2 dosyasının sıkıştırılmış boyutunu yazdırmanın bir yolu var mı?


Yani bzip çıktısındaki orijinal dosya hakkında meta veri yok mu? > :(
endolith

referans gördüğümden değil. : /
quack quixote

Yanıtlar:


36

Başkaları tarafından belirtildiği gibi, bzip2 fazla bilgi sağlamaz. Fakat bu teknik işe yarıyor - dosyayı açmak zorunda kalacaksınız, ancak sıkıştırılmış verileri diske yazmak zorunda kalmayacaksınız , ki bu sizin için "yeterince iyi" bir çözüm olabilir:

$ 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

Size okunabilir bir form vermek için bu çıktıyı başka bir şeye aktarabilirsiniz:

$ 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

9
Eh, bu hesaplamak için sadece% 100 CPU beş dakika sürdü.
Endolith

2
bir tek? VE bir diski doldurur? Ben sadece eski bir linux kurulumunun sıkıştırılmış bir tarball'ım var, bu sadece 407meg. Bu diske yazma dahil, tho, o komut dosyasını zamana çalıştırmak zorunda kalacağım. Yarım saat içinde ya geri dönelim ... :)
quixote

Elbette ilk test için en küçük dosyayı seçtim. 140 MB sıkıştırılmış -> 3 GB sıkıştırılmamış. Daha büyük dosyalar 5 GB sıkıştırılmış ...
endolith

heh .. lemme, 5GB’lerin ne kadar büyük olduklarını biliyorum ... ve bu XD ile hesaplamanın ne kadar uzun sürdüğünü biliyor
quixote

-3

Açmadan .bz uzantılı metin dosyasını okumak için.

bzcat dbtax_ext_en.ttl.bz2 |zless

1
bzcat ve zless birlikte bu şekilde çalışmaz. "Bzcat file.bz2 | less" veya "bzless file.bz2" yi kullanın ya da gzip dosyası varsa, "zcat file.gz | less" veya "zless file.gz" kullanın. Aslında, zless için man sayfası "Zless, kendisine standart girdiyle bağlanmış sıkıştırılmış verilerle çalışmaz; girdi dosyalarının argüman olarak belirtilmesini gerektirir."
Nick Russo,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.