Compression 压缩比

Compression 压缩比,compression,Compression,我有一个20Gb tar.gz文件,主要包含压缩的文本和图像文件。我想知道(在不解压缩文件的情况下)它会在我的磁盘上占用多少空间。如何进行估算?命令 gzip --list filename.gz 将告诉您原始未压缩文件的大小,以及其他内容,但不是当原始大小为4GB或更大时,如@MarkAdler所指出。在这种情况下,您需要解压缩.gz文件。但您不需要存储它或占用磁盘上的所有空间 按照另一个答案中的建议,使用gzip--list,是行不通的。gzip文件格式将未压缩的长度存储在末尾的四个字节中

我有一个20Gb tar.gz文件,主要包含压缩的文本和图像文件。我想知道(在不解压缩文件的情况下)它会在我的磁盘上占用多少空间。如何进行估算?

命令

gzip --list filename.gz

将告诉您原始未压缩文件的大小,以及其他内容,但不是当原始大小为4GB或更大时,如@MarkAdler所指出。

在这种情况下,您需要解压缩.gz文件。但您不需要存储它或占用磁盘上的所有空间

按照另一个答案中的建议,使用
gzip--list
,是行不通的。gzip文件格式将未压缩的长度存储在末尾的四个字节中,因此这仅适用于您知道的压缩长度小于4 GB的文件。在本例中,您肯定知道情况并非如此,因为压缩大小为20GB。因此,
gzip
报告的长度是无用的

要获得未压缩的长度,请将
gzip
解压缩的输出通过管道传输到将计算字节的内容,如
wc
。例如:

gzip -dc < foo.tar.gz | wc -c
gzip-dc
我有一堆压缩文件,我需要知道未压缩文件的大小,所以我想出了以下命令:

find foo/*.gz -exec gzip -l '{}' \; |awk '{ sub(/uncompressed/, " "); print } {sum += $2} END {print sum}'

唉,这在这种情况下是行不通的。gzip将告诉您未压缩的大小模为2^32。因此,20GB.gz将报告小于4GB的未压缩大小,这显然是错误的。它包含原始(未压缩)输入数据的大小,模为2^32。