¿Hay alguna forma rápida de verificar si un archivo comprimido está vacío, o tengo que descomprimirlo primero?
ejemplo:
$ 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
fuente
fuente
LC_ALL=C
que existe para garantizar que gzip no ponga miles de separadores en números para que el campo se pueda comparar con cero.LC_ALL=C
no puede hacer daño.read
se invoca en una subshell (y$line
no se propaga al padre).tr
arregla eso.Si por 'vacío' quiere decir que el archivo sin comprimir tiene 0 bytes, podría usarlo
gzip --list foo.gz
para determinar el tamaño del archivo sin comprimir, requeriría algún análisis para automatizarlo. Se parece a esto:fuente
O con
if
:zcat
a veces está vinculadogunzip -c
aogzip -cd
, si desea usarlo como el "formulario" más corto.fuente
Tenga en cuenta que el formato de archivo gzip solo permite 32 bits para almacenar el tamaño del archivo original, por lo que el número allí es el módulo de tamaño 2 ^ 32. Por lo tanto, el tamaño dado por "gzip -l" no es una prueba definitiva de vacío.
fuente