Articles avec le tag ‘stdout’

PostHeaderIcon Connaître la taille totale de la sortie standard StdOut

Il peut être utile parfois de connaître la dimension des informations qui vous sont renvoyées dans votre shell.
Ca peut vous paraître abstrait, voici donc une étude de cas.

J’ai un fichier gzip qui traine sur mon disque, je souhaiterai le décompresser mais je ne suis pas sûr d’avoir l’espace nécessaire pour parvenir à mes fins. On sait que gzip est capable de décompresser un fichier ou un flux stdin (via le pipe) puis le renvoyer dans le stdout (via l’argument -c). Vous pouvez donc utiliser par exemple les commandes :

# gzip -cd fichier.gz | puis je m’amuse avec mon flux
Ou
# zcat fichier.gz | puis je m’amuse avec mon flux

La partie après le pipe correspond au flux décompressé.
Nous voulons à présent connaître la taille totale de ce flux décompressé, qui correspondra à la taille du fichier décompressé.

Il suffit tout simplement d’utiliser l’outil magique dd

Soit :
# zcat fichier.gz | dd of=/dev/null
14793468+1 records in
14793468+1 records out
7574255817 bytes (7.6 GB) copied, 87.8925 s, 86.2 MB/s

Ici le fichier décompressé prendrait donc 7.6 Go d’espace disque.

Cette méthode est bien évidement applicable sur tout ce qui vous renvoi un flux dans le stdout.

Pour les gzip :
Merci à la personne (toto), qui m’a fait connaitre cette méthode via les commentaires.
Vous pouvez pour les fichiers Gzip utiliser « gzip -l », qui en plus d’être plus performant affichera plus de détails

$ gzip -l sed-4.1.5.tar.gz
compressed uncompressed ratio uncompressed_name
799584 3584000 77.7% sed-4.1.5.tar