有没有办法确定 .bz2 文件的解压缩大小?

end*_*ith 43 linux compression bzip2

有没有办法在不实际解压整个文件的情况下打印 .bz2 文件的解压大小?

qua*_*ote 43

正如其他人所指出的,bzip2 没有提供太多信息。但是这种技术有效——您必须解压缩文件,但不必将解压缩的数据写入磁盘,这对您来说可能是一个“足够好”的解决方案:

$ ls -l foo.bz2
-rw-r--r-- 1 ~quack ~quack 2364418 Jul  4 11:15 foo.bz2

$ bzcat foo.bz2 | wc -c         # bzcat decompresses to stdout, wc -c counts bytes
2928640                         # number of bytes of decompressed data
Run Code Online (Sandbox Code Playgroud)

您可以将该输出通过管道传输到其他内容中,以提供人类可读的形式:

$ ls -lh foo.bz2
-rw-r--r-- 1 quack quack 2.3M Jul  4 11:15 foo.bz2

$ bzcat foo.bz2 | wc -c | perl -lne 'printf("%.2fM\n", $_/1024/1024)'
2.79M
Run Code Online (Sandbox Code Playgroud)

  • 嗯,计算 100% CPU 只需要 5 分钟。 (11认同)
  • 只要?并且它会填满一个磁盘?我有一个旧的 linux 安装的压缩 tarball,它只有 407meg,但我那可怜的古老服务器花了 30-45 分钟才能解压。这包括写入磁盘,tho,我必须运行该脚本来计时。半小时后回复你... :) (2认同)