Unzip gz archives with zip extension

gzipzip

I have a number of gzip archives; however they have a zip extension not gz:
***.zip

When I try to unzip them with unzip, I get not a zip archive error, and with gunzip I get unknown suffix: zip

What is going on here really?

Best Answer

By default, gzip will only decompress files with extensions from a limited list—rather than examining the file magic to determine if it is a gzip'd file. From a comment in 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.                      

To use input files which are in fact gzip'd but are not named following gzip's expected conventions, provide the suffix explicitly as per the gzip manual page:

-S .suf --suffix .suf

... When decompressing, add .suf to the beginning of the list of suffixes to try, when deriving an output file name from an input file name.

$ gunzip -S .zip foo.zip

or use redirection to prevent gzip from seeing the filename:

$ gunzip < foo.zip > foo.txt
Related Question