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

求Bash脚本:批量将一级目录下二级文件/文件夹单独压缩为高压缩率7z包

批量二级对象独立7z压缩Bash脚本

前置依赖

  • 需提前安装p7zip压缩工具:
    • Debian/Ubuntu 系发行版:sudo apt install p7zip-full
    • RHEL/CentOS/Fedora 系发行版:sudo dnf install p7zip p7zip-plugins
    • macOS(Homebrew环境):brew install p7zip

脚本代码

#!/bin/bash
# -------------------------- 自定义配置区 开始 --------------------------
# 一级根目录路径,需替换为你的实际路径
SOURCE_DIR="/e/Path/To Parent Folder"
# 压缩包输出存储路径,需替换为你的实际路径
OUTPUT_DIR="/g/Path/To Archive Folder"
# 7z压缩等级,1=最快压缩率最低,9=最慢压缩率最高
COMPRESS_LEVEL=9
# 是否跳过已存在的压缩包,true=跳过,false=覆盖
SKIP_EXIST=true
# -------------------------- 自定义配置区 结束 --------------------------

# 检查源目录是否存在
if [ ! -d "$SOURCE_DIR" ]; then
    echo "错误:源目录 $SOURCE_DIR 不存在"
    exit 1
fi

# 创建输出目录(不存在时自动创建)
mkdir -p "$OUTPUT_DIR"

# 遍历源目录下所有二级对象(文件+文件夹)
for item in "$SOURCE_DIR"/*; do
    # 跳过不存在的匹配项(空目录场景)
    [ -e "$item" ] || continue
    
    # 提取二级对象的名称(不含父路径)
    item_name=$(basename "$item")
    # 拼接输出压缩包完整路径
    output_archive="$OUTPUT_DIR/${item_name}.7z"
    
    # 跳过已存在的压缩包(配置开启时)
    if [ "$SKIP_EXIST" = true ] && [ -f "$output_archive" ]; then
        echo "跳过已存在的压缩包:$output_archive"
        continue
    fi
    
    echo "正在压缩:$item_name"
    # 执行7z压缩命令
    7z a -t7z -mx="$COMPRESS_LEVEL" -bb0 -bso0 "$output_archive" "$item"
    if [ $? -eq 0 ]; then
        echo "压缩完成:$output_archive"
    else
        echo "压缩失败:$item_name"
    fi
done

使用方法

  1. 修改脚本上方「自定义配置区」的SOURCE_DIR为你的一级根目录路径,OUTPUT_DIR为你想要存放7z包的目标路径
  2. 给脚本赋予执行权限:chmod +x batch_7z_compress.sh
  3. 运行脚本即可自动完成批量压缩

注意事项

  • 如果是Windows环境使用,可在WSL、Git Bash、Cygwin等兼容Bash的环境下运行,Windows路径按对应环境的规则书写即可(比如WSL下C盘路径为/c/xxx,Git Bash同理)
  • 高压缩等级会消耗更多CPU和时间,如果你优先考虑压缩速度,可将COMPRESS_LEVEL调整为5或3
  • 脚本默认静默输出压缩过程,如需查看详细压缩日志,可删除7z命令中的-bb0 -bso0参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 16:24:01