如何重新解压缩嵌套的ZIP文件?

时间:2015-12-10 18:10:32

标签: linux bash shell zip unzip

好的,鉴于嵌套ZIP文件中有一个秘密文件 ,即zip文件中的zip文件中的ZIP文件等...

ZIP文件名为1.zip2.zip3.zip等......

我们不知道ZIP文件的嵌套深度,但可能数千

最简单的方法是遍历所有直到最后一个读取密码文件

我最初的方法是递归调用unzip,但我的bash技能有限。你有什么想法来解决这个问题?

4 个答案:

答案 0 :(得分:1)

这是我的2美分。

#!/bin/bash

function extract(){
  unzip $1 -d ${1/.zip/} && eval $2 && cd ${1/.zip/}
  for zip in `find . -maxdepth 1 -iname *.zip`; do
    extract $zip 'rm $1'
  done
}

extract '1.zip'

答案 1 :(得分:1)

谢谢赛勒斯!大师巫师肖恩·戈夫(Shawn J. Goff)有一个完美的剧本:

while [ "`find . -type f -name '*.zip' | wc -l`" -gt 0 ]; do find -type f -name "*.zip" -exec unzip -- '{}' \; -exec rm -- '{}' \;; done

答案 2 :(得分:0)

可能不是最干净的方式,但应该这样做:

#!/bin/sh
IDX=1 # ID of your first zip file
while [ 42 ]
do
    unzip $IDX.zip # Extract
    if [[ $? != 0 ]]
    then
        break # Quit if unzip failed (no more files)
    fi
    if [ $IDX -ne 1 ]
    then
        rm $IDX.zip # Remove zip to leave your directory clean
    fi
    (( IDX ++ )) # Next file
done

答案 3 :(得分:0)

检查此基于java的实用程序nzip是否有嵌套拉链。

使用以下命令可以轻松地提取和压缩嵌套拉链:

java -jar nzip.jar -c list -s readme.zip 

java -jar nzip.jar -c extract -s "C:\project\readme.zip" -t readme 

java -jar nzip.jar -c compress -s readme -t "C:\project\readme.zip" 

PS. I am the author and will be happy to fix any bugs quickly.