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 disso. Tamanho do arquivo compactado próximo a 4 GB.
Então, tentei esta opção para capturar dados corretos:
$ zcat mycontent.DAT.Gz | wc -c
Dá-me este erro:
mycontent.DAT.Gz.Z:A file or directory in the path name does not exist.
0
Você pode me dizer como capturar esse valor do shell script sem descomprimir o arquivo de origem?
Respostas:
Para responder ao título da pergunta:
Como você obviamente sabe, a opção
-l
(--list
) geralmente mostra o tamanho não compactado.O que mostra não é calculado a partir dos dados, mas foi armazenado no cabeçalho como parte do arquivo compactado.
No seu caso, a
-l
opção não funciona por algum motivo.Mas não é possível 'medir' o tamanho não compactado dos dados compactados brutos - simplesmente não há informações sobre mais nada nos dados compactados - o que não é surpreendente, pois o ponto de compactação é deixar de fora qualquer coisa que não seja necessária.
Você não precisa armazenar os dados descompactados no disco:
zcat file.gz | wc -c
é a abordagem correta - mas, como o @OleTange respondeu,zcat
parece que não é vocêgzip
.A alternativa é usar as
gzip
opções-d
(--decompress
) e-c
(--to-stdout
), combinadas com awc
opção-c
(--bytes
):fonte
-l
opção possui um erro para arquivos maiores que 4 GB: bugs.debian.org/cgi-bin/bugreport.cgi?bug=149775Você
zcat
não é o GNU zcat, mas o Compress. Experimentar:fonte
O gzip -l não funcionou para mim, apenas o git -1 ... mas isso funcionou:
fonte
Estou encontrando todos os sites da Web e não resolvo esse problema com o tamanho de obter quando o tamanho do arquivo é maior que 4 GB.
minha solução é esta :
para obter o tamanho total do arquivo gz:
fonte