没有扩展名的文件名,检查它们是否是gzip压缩文件或gzipped tar文件

时间:2017-05-17 10:24:49

标签: gzip tar gunzip

我有一个非常大的文件列表,一些文件是gzip压缩文件,而其他文件只是压缩的gzip文件。不幸的是,他们都获得了扩展名.gz。是否有一种简单的方法可以检查哪些文件实际上应该具有.tar.gz扩展名而无需解压缩并重新打包所有文件?

1 个答案:

答案 0 :(得分:1)

您需要解压缩每个gzip文件的前512个字节。计算该标头的tar校验和,并查看它是否与偏移量为148的标头中的校验和匹配。由于tar的历史实现中存在一些不一致,您需要以两种方式进行计算。请参阅tar维基百科页面中的此注释:

  

通过取无符号字节的总和来计算校验和   头记录的值,取八个校验和字节   ascii空格(十进制值32)。它存储为六位八进制   带有前导零的数字后跟一个NUL,然后是一个空格。各个   实现不遵循这种格式。为了更好的   兼容性,忽略前导和尾随空格,并采取   前六位数。此外,还有一些历史性的tar实现   处理后的字节为已签名实现通常计算   校验和两种方式,如果签名或   unsigned sum匹配包含的校验和。

如果校验和匹配,则很可能您有.tar.gz文件。如果校验和不匹配,则它不是.tar.gz文件。

如果它总共解压缩到1024个字节,它也可能是一个空的tar文件,并且字节都是零。

相关问题