Como posso obter o tamanho descompactado do arquivo gzip sem realmente descompactá-lo?

17

Por favor, encontre os detalhes do meu sistema operacional:

$ uname -a
AIX xxyy 1 6 000145364C00

Eu tentei o seguinte comando para obter o tamanho de um arquivo no arquivo gzip:

$ gzip -l mycontent.DAT.Gz
compressed  uncompr.   ratio   uncompressed_name
-1223644243 1751372002 -75.3%  mycontent.DAT.Gz

Não sei como interpretar o tamanho descompactado a partir disso. Tamanho de arquivo compactado perto de 4 GB.

Então, tentei essa opção para capturar dados corretos:

$ zcat mycontent.DAT.Gz | wc -c

Isso me dá esse erro:

mycontent.DAT.Gz.Z:A file or directory in the path name does not exist.
0

Você pode, por favor, me dizer como capturar este valor do shell script sem descompactar o arquivo fonte?

    
por user238010 14.07.2013 / 11:15

4 respostas

15

Para responder ao título da pergunta:

How can I get the uncompressed size of gzip file without actually decompressing it?

Como você obviamente sabe, a opção -l ( --list ) geralmente mostra o tamanho descompactado.
O que ele mostra não é calculado a partir dos dados, mas foi armazenado no cabeçalho como parte do arquivo compactado.

No seu caso, a opção -l não funciona por algum motivo.
Mas não é possível "medir" o tamanho descompactado dos dados compactados brutos - não há informações sobre qualquer outra coisa nos dados compactados - o que não surpreende, já que o ponto de compressão é deixar de fora qualquer coisa que não seja necessária. p>

Você não precisa armazenar os dados descompactados no disco: zcat file.gz | wc -c é a abordagem correta - mas como @OleTange respondeu, seu zcat parece não ser o de gzip .
A alternativa é usar as gzip options -d ( --decompress ) e -c ( --to-stdout ), combinadas com wc option -c ( --bytes ):

gzip -dc file.gz | wc -c
    
por 18.10.2014 / 20:20
5

Você zcat não é GNU zcat, mas de compress. Experimente:

gzcat mycontent.DAT.Gz | wc -c
gzip -dc mycontent.DAT.Gz | wc -c
    
por 14.07.2013 / 16:58
1

gzip -l não funcionou para mim, apenas git -1 ... mas isso aconteceu:

unzip -l file.zip
    
por 29.09.2015 / 18:33
0

Estou a encontrar todos os sites na Web e não resolvo este problema quando o tamanho do ficheiro for superior a 4 GB.

minha solução é esta :


[oracle@base tmp]$ timeout --signal=SIGINT 1s tar -tvf oracle.20180303.030001.dmp.tar.gz
    -rw-r--r-- oracle/oinstall 111828 2018-03-03 03:05 oracle.20180303.030001.log
    -rw-r----- oracle/oinstall 6666911744 2018-03-03 03:05 oracle.20180303.030001.dmp

para obter o tamanho total do arquivo gz:

[oracle@base tmp]$ echo $(timeout --signal=SIGINT 1s tar -tvf oracle.20180303.030001.dmp.tar.gz | awk '{print $3}') | grep -o '[[:digit:]]*' | awk '{ sum += $1 } END { print sum }'
    6667023572
    
por 08.03.2018 / 23:37

Tags