好的,鉴于嵌套ZIP文件中有一个秘密文件 ,即zip文件中的zip文件中的ZIP文件等...
ZIP文件名为1.zip
,2.zip
,3.zip
等......
我们不知道ZIP文件的嵌套深度,但可能数千。
最简单的方法是遍历所有直到最后一个读取密码文件?
我最初的方法是递归调用unzip
,但我的bash技能有限。你有什么想法来解决这个问题?
答案 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.