Veuillez trouver les détails de mon système d'exploitation:
$ uname -a
AIX xxyy 1 6 000145364C00
J'ai essayé la commande suivante pour obtenir la taille d'un fichier dans l'archive gzip:
$ gzip -l mycontent.DAT.Gz
compressed uncompr. ratio uncompressed_name
-1223644243 1751372002 -75.3% mycontent.DAT.Gz
Je ne sais pas comment interpréter la taille décompressée à partir de cela. Taille du fichier compressé proche de 4 Go.
J'ai donc essayé cette option afin de capturer des données correctes:
$ zcat mycontent.DAT.Gz | wc -c
Cela me donne cette erreur:
mycontent.DAT.Gz.Z:A file or directory in the path name does not exist.
0
Pouvez-vous me dire comment capturer cette valeur à partir d'un script shell sans décompresser le fichier source?
Réponses:
Pour répondre au titre de la question:
Comme vous le savez évidemment, l'option
-l
(--list
) affiche généralement la taille non compressée.Ce qu'il montre n'est pas calculé à partir des données, mais a été stocké dans l'en-tête dans le cadre du fichier compressé.
Dans votre cas, l'
-l
option ne fonctionne pas pour une raison quelconque.Mais il n'est pas possible de `` mesurer '' la taille non compressée à partir des données compressées brutes - il n'y a tout simplement aucune information sur quoi que ce soit d'autre dans les données compressées - ce qui n'est pas surprenant, car le point de compression est de laisser de côté tout ce qui n'est pas nécessaire.
Vous n'avez pas besoin de stocker les données non compressées sur le disque:
zcat file.gz | wc -c
c'est la bonne approche - mais comme @OleTange a répondu, votrezcat
semble ne pas être celui degzip
.L'alternative utilise les
gzip
options-d
(--decompress
) et-c
(--to-stdout
), combinées avec l'wc
option-c
(--bytes
):la source
-l
option comporte un bogue pour les fichiers supérieurs à 4 Go: bugs.debian.org/cgi-bin/bugreport.cgi?bug=149775Vous
zcat
n'êtes pas GNU zcat mais de compress. Essayer:la source
gzip -l n'a pas fonctionné pour moi, juste git -1 ... mais cela a fonctionné:
la source
Je trouve tous les sites sur le Web et ne résout pas ce problème lorsque la taille du fichier est supérieure à 4 Go.
ma solution est la suivante :
pour obtenir la taille totale du fichier gz:
la source