当前位置: 首页 > 知识库问答 >
问题:

如何解压缩一个zip文件在另一个zip文件?

谭玉泽
2023-03-14

我有多个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。我想解压缩app1app2app3app4到新的文件夹中。我想使用与父zip文件夹相同的名称来放置每个结果。我尝试了以下答案,但这只解压缩第一个文件夹。

   sh '''
        for zipfile in ${WORKSPACE}/*.zip; do
            exdir="${zipfile%.zip}"
            mkdir "$exdir"
            unzip -d "$exdir" "$zipfile"
        done
                
    '''

顺便说一句,我在Jenkins管道中运行这个命令。

共有1个答案

东深
2023-03-14

不知道Jenkins,但您需要的是递归函数。

#!/bin/dash
recursiveUnzip () { # $1=directory
    local path="$(realpath "$1")"
    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 "$1"

然后这样调用脚本

./recursiveUnzip.sh <directory>

在你的情况下,可能是这样

./recursiveUnzip.sh "$WORKSPACE"
 类似资料:
  • 我们正在努力从Maven迁移到Gradle。不幸的是,我们还有几个战争复盖物要处理。

  • 我在下面找到了这个脚本,但它对我不起作用,因为我的文件有空间,而且我在一个zip文件中有多个文件。 请救命!谢谢你

  • 本文向大家介绍Python压缩解压缩zip文件及破解zip文件密码的方法,包括了Python压缩解压缩zip文件及破解zip文件密码的方法的使用技巧和注意事项,需要的朋友参考一下 python 的 zipfile 提供了非常便捷的方法来压缩和解压 zip 文件。 例如,在py脚本所在目录中,有如下文件: 将 readability 目录中的文件压缩到脚本所在目录的 readability.zip

  • 我有一个包含一些子目录的目录。我可以看到目录中带有“gci-Recurse *| %{ Write-host$_}”的文件。在这个给定的列表中有一些zip文件。我想在使用“展开存档”时将这些zip文件解压缩到一个名为zip文件的目录中。 如何将调用“gci-Recurse*|%{write host${}”与“Expand Archive”结合起来。

  • 我无法从Jmeter上传.zip文件。 在尝试上传文件时,我遇到如下错误, 支持的HTTP方法:POST。 请求标题: 有人能帮我上传吗?从Jmeter的zip文件,参考下面的图片为我的请求, 提前感谢。

  • 我有几个压缩文件,其中有多个文件和文件夹。它基本上包含文本文件。说分机A和B。 我想使用perl脚本或java代码将扩展名'a'文件和扩展名'b'文件分离到单独的zip文件中。 并且任何关于使用perl还是java的评论都是额外的奖励。 谢谢你。