Existe-t-il un moyen rapide de vérifier si un fichier compressé est vide, ou dois-je le décompresser en premier?
exemple:
$ touch foo
$ if [ -s foo ]; then echo not empty; fi
$ gzip foo
$ if [ -s foo.gz ]; then echo not empty; fi
not empty
$ wc -l foo.gz
1 foo.gz
command-line
bash
gzip
dogbane
la source
la source
LC_ALL=C
qu'il est là pour s'assurer que gzip ne met pas en milliers de séparateurs en nombre afin que le champ puisse être comparé à zéro?LC_ALL=C
peux pas faire de mal.read
est invoquée dans un sous-shell (et$line
n'est pas propagée au parent).tr
résout cela.Si par «vide» vous voulez dire que le fichier non compressé fait 0 octet, vous pouvez utiliser
gzip --list foo.gz
pour déterminer la taille du fichier non compressé, cela nécessiterait une analyse syntaxique pour l'automatiser. Cela ressemble à ceci:la source
Ou avec
if
:zcat
est parfois lié àgunzip -c
ougzip -cd
, si vous voulez l'utiliser comme "forme" plus courte.la source
Veuillez noter que le format de fichier gzip n'autorise que 32 bits pour stocker la taille du fichier d'origine, donc le nombre est la taille modulo 2 ^ 32. Par conséquent, la taille donnée par "gzip -l" n'est pas un test définitif de vide.
la source