Existe uma maneira rápida de verificar se um arquivo compactado em gzip está vazio ou preciso descompactá-lo primeiro?
exemplo:
$ 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
fonte
fonte
LC_ALL=C
está lá para garantir que gzip não põe em separadores de milhar nos números de modo que o campo pode ser comparado a zero?LC_ALL=C
não pode machucar.read
está sendo chamada em um subshell (e$line
não é propagada para o pai).tr
que conserta isso.Se por 'vazio' você quer dizer que o arquivo descompactado é de 0 bytes, você pode usar
gzip --list foo.gz
para determinar o tamanho do arquivo descompactado, seria necessária uma análise para automatizá-lo. Parece algo como isto:fonte
Ou com
if
:zcat
às vezes está vinculado agunzip -c
ougzip -cd
, se você deseja usá-lo como o "formulário" mais curto.fonte
Observe que o formato do arquivo gzip permite apenas 32 bits para armazenar o tamanho do arquivo original, portanto, o número do módulo 2 é 32 ^. Portanto, o tamanho dado por "gzip -l" não é um teste definitivo para o vazio.
fonte