Existe-t-il un moyen de déterminer la taille décompressée d'un fichier .bz2?

34

Existe-t-il un moyen d'imprimer la taille décompressée d'un fichier .bz2 sans décompresser réellement le tout?

endolithe
la source
Il n'y a donc pas de métadonnées sur le fichier d'origine dans la sortie bzip? > :(
endolith
pas que je l'ai vu référence. : /
quack quixote

Réponses:

36

Comme indiqué par d'autres, bzip2 ne fournit pas beaucoup d'informations. Mais cette technique fonctionne - vous devrez décompresser le fichier, mais vous n'aurez pas à écrire les données décompressées sur le disque, ce qui peut être une solution "assez bonne" pour vous:

$ 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

Vous pouvez diriger cette sortie vers quelque chose d'autre pour vous donner une forme lisible par l'homme:

$ 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 Quack
la source
9
Eh bien, cela n'a pris que cinq minutes de CPU à 100% pour calculer.
endolith
2
seulement? ET cela remplirait un disque? J'ai une archive tar compressée d'une ancienne installation linux qui ne fait que 407meg mais a pris 30 à 45 minutes à mon pauvre ancien serveur pour l'extraire. cela comprenait l'écriture sur le disque, mais je vais devoir exécuter ce script pour le chronométrer. reviens vers toi dans une demi-heure ... :)
quack quixote
J'ai choisi le plus petit fichier pour le premier test, bien sûr. 140 Mo compressés -> 3 Go non compressés. Les fichiers plus volumineux sont compressés à 5 Go ...
endolith
heh .. laissez-moi savoir quelle taille les 5 Go se révèlent être ... et combien de temps il faut pour le découvrir via ce XD
Quack Quack
-3

Pour lire le fichier texte de l'extension .bz sans décompresser.

bzcat dbtax_ext_en.ttl.bz2 |zless
Shashank Motepalli
la source
1
bzcat et zless ne fonctionnent pas ensemble comme ça. Utilisez "bzcat file.bz2 | less" ou "bzless file.bz2", ou si vous avez un fichier compressé, "zcat file.gz | less" ou "zless file.gz". En fait, la page de manuel de zless note que "Zless ne fonctionne pas avec les données compressées qui y sont acheminées via une entrée standard; il nécessite que les fichiers d'entrée soient spécifiés comme arguments."
Nick Russo