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

求脚本:压缩指定目录下所有子目录,忽略目录内文件

仅压缩指定目录下子目录、忽略文件的脚本方案

你的需求是对目标目录下的所有子目录进行7z压缩,同时保留该目录下的文件,原脚本因为没有区分目录和文件,导致所有内容都被压缩删除,以下是修正后的方案:

修正后的脚本

for i in /foo/*; do
  # 仅处理目录,跳过文件
  if [ -d "$i" ]; then
    f=$(basename -- "$i")
    7z a "/foo/$f.7z" "$i"
    rm -Rf "$i"
  fi
done

关键改动说明

  • 新增if [ -d "$i" ]; then判断:-d是Shell的目录检测参数,只有当遍历到的对象是目录时,才会执行压缩和删除操作,自动跳过原目录下的文件(比如示例中的barbaz.txt)
  • 保留原脚本的核心逻辑:获取目录名、7z压缩、删除原目录,确保处理后的目录结构完全符合你的预期

额外提示

  • 建议先在测试目录中验证脚本逻辑,避免误删重要数据
  • 如需调整压缩级别,可在7z a后添加参数,比如7z a -mx9 "/foo/$f.7z" "$i"(-mx9代表最高压缩等级)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 12:23:13