如何将一个 zip 文件解压到另一个 zip 文件中?
how to unzip a zip file inside another zip file?
我在一个文件夹中有多个 zip 文件,每个 zip 文件夹中都存在另一个 zip 文件。我想解压第一个和第二个 zip 文件夹并创建它们自己的目录。
这是结构
Workspace
customer1.zip
application/app1.zip
customer2.zip
application/app2.zip
customer3.zip
application/app3.zip
customer4.zip
application/app4.zip
如上所示,在 Workspace
中,我们有多个 zip 文件,并且在每个 zip 文件中,都存在另一个 zip 文件 application/app.zip
。我想将 app1
、app2
、app3
和 app4
解压缩到新文件夹中。我想使用与父 zip 文件夹相同的名称来放置每个结果。我尝试了以下 answers 但这只会解压缩第一个文件夹。
sh '''
for zipfile in ${WORKSPACE}/*.zip; do
exdir="${zipfile%.zip}"
mkdir "$exdir"
unzip -d "$exdir" "$zipfile"
done
'''
顺便说一句,我在我的 Jenkins 管道中 运行 这个命令。
不知道 Jenkins
但你需要的是递归函数。
recursiveUnzip.sh
#!/bin/dash
recursiveUnzip () { # =directory
local path="$(realpath "")"
for file in "$path"/*; do
if [ -d "$file" ]; then
recursiveUnzip "$file"
elif [ -f "$file" -a "${file##*.}" = 'zip' ]; then
# unzip -d "${file%.zip}" "$file" # variation 1
unzip -d "${file%/*}" "$file" # variation 2
rm -f "$file" # comment this if you want to keep the zip files.
recursiveUnzip "${file%.zip}"
fi
done
}
recursiveUnzip ""
然后像这样调用脚本
./recursiveUnzip.sh <directory>
你的情况,大概是这样
./recursiveUnzip.sh "$WORKSPACE"
我在一个文件夹中有多个 zip 文件,每个 zip 文件夹中都存在另一个 zip 文件。我想解压第一个和第二个 zip 文件夹并创建它们自己的目录。
这是结构
Workspace
customer1.zip
application/app1.zip
customer2.zip
application/app2.zip
customer3.zip
application/app3.zip
customer4.zip
application/app4.zip
如上所示,在 Workspace
中,我们有多个 zip 文件,并且在每个 zip 文件中,都存在另一个 zip 文件 application/app.zip
。我想将 app1
、app2
、app3
和 app4
解压缩到新文件夹中。我想使用与父 zip 文件夹相同的名称来放置每个结果。我尝试了以下 answers 但这只会解压缩第一个文件夹。
sh '''
for zipfile in ${WORKSPACE}/*.zip; do
exdir="${zipfile%.zip}"
mkdir "$exdir"
unzip -d "$exdir" "$zipfile"
done
'''
顺便说一句,我在我的 Jenkins 管道中 运行 这个命令。
不知道 Jenkins
但你需要的是递归函数。
recursiveUnzip.sh
#!/bin/dash
recursiveUnzip () { # =directory
local path="$(realpath "")"
for file in "$path"/*; do
if [ -d "$file" ]; then
recursiveUnzip "$file"
elif [ -f "$file" -a "${file##*.}" = 'zip' ]; then
# unzip -d "${file%.zip}" "$file" # variation 1
unzip -d "${file%/*}" "$file" # variation 2
rm -f "$file" # comment this if you want to keep the zip files.
recursiveUnzip "${file%.zip}"
fi
done
}
recursiveUnzip ""
然后像这样调用脚本
./recursiveUnzip.sh <directory>
你的情况,大概是这样
./recursiveUnzip.sh "$WORKSPACE"