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

如何编写bash脚本,批量解压zip前删除对应目标文件夹内容

批量更新脚本

以下脚本可直接满足你的需求,自动识别每个zip内部的主文件夹名称,先删除旧文件夹再解压,不会残留旧文件:

#!/bin/bash
# 遍历当前目录下所有zip文件
for zip_file in *.zip; do
    # 无zip文件时跳过,避免报错
    [ -f "$zip_file" ] || continue
    # 提取zip内部的主文件夹名称
    target_dir=$(unzip -l "$zip_file" | awk 'NR>3 {sub(/\/.*/, "", $4); print $4; exit}')
    # 目录名校验,防止异常zip导致误删
    if [ -n "$target_dir" ] && [ "$target_dir" != "." ] && [ "$target_dir" != "/" ]; then
        # 删除旧版本文件夹
        rm -rf "$target_dir"
        # 解压新版本
        unzip -o "$zip_file"
    fi
done
# 删除所有处理完成的zip包
rm -f *.zip

说明

  • 脚本会自动处理当前目录下所有zip文件,不需要提前配置文件夹名称,支持一次上传大量zip包的更新场景
  • 运行前建议先做测试:将rm -rf "$target_dir"替换为echo "待删除目录: $target_dir",执行脚本确认输出的目录名称正确后,再换回删除命令即可
  • 适配你提到的「每个zip仅包含单个主文件夹、无其他根级文件」的规则,不会出现识别错误

内容的提问来源于stack exchange,提问作者Konrad Bartczak

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:36:02