You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取Linux环境下多层嵌套Zip文件中的最内层文件?

提取多层嵌套Zip归档的最内层文件(Linux环境)

针对你这种每层仅包含一个嵌套Zip的场景,直接用bash循环就能自动完成3300次提取操作,不用手动重复执行。

方案一:适配你的文件名序列

如果确定归档严格遵循3301.zip到1.zip的命名规律,用这个脚本最稳妥:

current="3301.zip"
while [ -f "$current" ]; do
    # 静默提取当前Zip,避免输出刷屏
    unzip -q "$current"
    # 获取下一层嵌套的Zip文件名(每个归档仅包含该文件)
    next=$(unzip -l "$current" | awk 'NR>3 && $NF ~ /\.zip$/ {print $NF; exit}')
    # 删除已提取完成的旧Zip(不需要保留就注释掉该行)
    rm "$current"
    current="$next"
    # 处理到1.zip时,提取后终止循环
    if [ "$current" = "1.zip" ]; then
        unzip -q "$current"
        rm "$current"
        break
    fi
done

方案二:通用嵌套Zip提取(不依赖文件名)

如果不确定文件名规律,仅需提取所有嵌套到最内层,用这个通用循环:

# 只要当前目录存在Zip文件,就持续提取
while ls *.zip 1>/dev/null 2>&1; do
    # 取目录中第一个Zip文件进行提取
    zip_file=$(ls *.zip | head -n1)
    unzip -q "$zip_file"
    # 删除原Zip(不需要保留就注释掉该行)
    rm "$zip_file"
done

注意事项

  • 先确认系统安装了unzip工具:Debian/Ubuntu系执行sudo apt install unzip,RHEL/CentOS/Fedora系执行sudo dnf install unzip
  • 若中途遇到损坏的Zip文件,脚本会停止运行,需手动修复或跳过该归档
  • 保留原Zip文件的话,注释掉所有rm命令即可,但3300个Zip会占用较多磁盘空间

内容的提问来源于stack exchange,提问作者Cipri Rengle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 12:30:43