使用 zip 扩展名解压 gz 档案

使用 zip 扩展名解压 gz 档案

我有很多 gzip 档案;但是他们的邮政编码扩展名不是 gz:***.zip

当我尝试使用 解压它们时unzip,出现not a zip archive错误,而使用gunzip 时出现错误unknown suffix: zip

这里究竟发生了什么?

答案1

默认情况下,gzip只会解压缩带有有限列表中的扩展名的文件,而不是检查文件magic以确定它是否是 gzip 文件。来自以下评论gzip.c::get_suffix()

/* ========================================================================                 
 * Return a pointer to the 'z' suffix of a file name, or NULL. For all                      
 * systems, ".gz", ".z", ".Z", ".taz", ".tgz", "-gz", "-z" and "_z" are                     
 * accepted suffixes, in addition to the value of the --suffix option.                      

要使用实际上经过 gzip 压缩但未按照gzip预期约定命名的输入文件,请按照以下明确提供后缀gzip手册页

-S .suf --后缀 .suf

...解压缩时,将 .suf 添加到后缀列表的开头以尝试从输入文件名派生输出文件名。

$ gunzip -S .zip foo.zip

或使用重定向来防止gzip看到文件名:

$ gunzip < foo.zip > foo.txt

相关内容