¿Hay alguna manera de determinar el tamaño descomprimido de un archivo .bz2?

34

¿Hay alguna manera de imprimir el tamaño descomprimido de un archivo .bz2 sin realmente descomprimir todo?

endolito
fuente
Entonces, ¿no hay metadatos sobre el archivo original en la salida de bzip? > :(
endolito
No es que haya visto referencia a. : /
quack quijote

Respuestas:

36

Como han señalado otros, bzip2 no proporciona mucha información. Pero esta técnica funciona: tendrá que descomprimir el archivo, pero no tendrá que escribir los datos descomprimidos en el disco, lo que puede ser una solución "suficientemente buena" para usted:

$ 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

Puede canalizar esa salida en otra cosa para darle una forma legible para humanos:

$ 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
quijote curandero
fuente
99
Bueno, eso solo tomó cinco minutos de 100% de CPU para calcular.
endolito el
2
¿solamente? ¿Y llenaría un disco? Tengo un tarball comprimido de una vieja instalación de Linux que solo tiene 407 megagramos, pero tardé 30-45 minutos en extraer mi pobre servidor antiguo. eso incluía escribir en el disco, aunque tendré que ejecutar ese script para cronometrarlo. volveré a ti en media hora ... :)
quack quixote
Escogí el archivo más pequeño para la primera prueba, por supuesto. 140 MB comprimidos -> 3 GB sin comprimir. Los archivos más grandes tienen 5 GB comprimidos ...
endolith
je .. déjame saber cuán grande es el 5GBs llegar a ser ... y cuánto tiempo se necesita para resolverlo a través de este XD
charlatán quijote
-3

Para leer el archivo de texto de extensión .bz sin descomprimir.

bzcat dbtax_ext_en.ttl.bz2 |zless
Shashank Motepalli
fuente
1
bzcat y zless no funcionan juntos de esta manera. Utilice "bzcat file.bz2 | less" o "bzless file.bz2", o si tiene un archivo comprimido, "zcat file.gz | less" o "zless file.gz". De hecho, la página del manual para zless señala que "Zless no funciona con datos comprimidos que se canalizan a través de una entrada estándar; requiere que los archivos de entrada se especifiquen como argumentos".
Nick Russo el