压缩文件中包含没有名称的文件,如何解压缩?

时间:2019-03-07 11:55:39

标签: zip unzip ziparchive

我有一个ZIP存档,里面有一些照片。 问题是,我无法解压缩该存档中的所有文件。

解压缩命令:

unzip archive.zip
Archive:  archive.zip
mapname:  conversion of  failed
mapname:  conversion of  failed
mapname:  conversion of  failed
mapname:  conversion of  failed
mapname:  conversion of  failed
mapname:  conversion of  failed
mapname:  conversion of  failed
mapname:  conversion of  failed
mapname:  conversion of  failed
mapname:  conversion of  failed
mapname:  conversion of  failed
mapname:  conversion of  failed

ZIP存档中的文件列表(每个文件都没有名称...):

unzip -l archive.zip 
Archive:  archive.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
    61684  03-07-2019 10:01   
    55901  03-07-2019 10:01   
    71678  03-07-2019 10:01   
    69684  03-07-2019 10:01   
    57131  03-07-2019 10:01   
    95984  03-07-2019 10:01   
    69633  03-07-2019 10:01   
    73401  03-07-2019 10:01   
    79661  03-07-2019 10:01   
    53126  03-07-2019 10:01   
    68691  03-07-2019 10:01   
    66707  03-07-2019 10:01   
---------                     -------
   823281                     12 files

解压缩测试命令:

unzip -t archive.zip 
Archive:  archive.zip
    testing:                          OK
    testing:                          OK
    testing:                          OK
    testing:                          OK
    testing:                          OK
    testing:                          OK
    testing:                          OK
    testing:                          OK
    testing:                          OK
    testing:                          OK
    testing:                          OK
    testing:                          OK

如果我尝试使用管道命令解压缩,那么我有一个JPEG文件,其中包含所有存档照片。

unzip -p archive.zip | cat > $(date +%s%3N).jpeg

请,有机会解压缩这样的存档吗?


已更新

在HEX编辑器中显示ZIP归档文件时,我看到归档文件尚未设置名称。图像上是ZIP文件的结尾,其中包含有关存档的每个文件的信息。图像上的选定字节代表一个存档文件的信息容器。Information Bytes of one of archived file

1 个答案:

答案 0 :(得分:0)

首先,我认为您在shell中的语言环境不应为ASCII。

locale

可以存档的编码。想到了UTF-16 / UTF-32大字节序,因为对于ASCII字母,前一个nul字节将占空字符串。

unzip -O UTF-16BE -l archive.zip
unzip -O UTF-16BE archive.zip

否则,需要一些编程,要么修补名称,要么遍历条目并选择您自己的名称来存储每个文件。 Java ZipInputStream可以。

我认为是这种情况,有人编程压缩目录但忘记设置条目的文件名。