File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11#! /bin/bash
22
3- # 定义切分文件的前缀
3+ # 1. 定义变量
44TARGET_DIR=" tool_cache"
5- INPUT_PREFIX =" extract_ths_tool_cache/tool_cache.tar.gz.part_"
5+ INPUT_PATTERN =" extract_ths_tool_cache/tool_cache.tar.gz.part_[a-z][a-z] "
66
7- # 检查是否有分卷文件
8- if ! ls ${INPUT_PREFIX} * 1> /dev/null 2>&1 ; then
9- echo " 错误:未发现分卷文件 ${INPUT_PREFIX} *"
7+ # 2. 检查分卷是否存在
8+ FILES=$( ls ${INPUT_PATTERN} 2> /dev/null)
9+ if [ -z " $FILES " ]; then
10+ echo " 错误:未发现符合命名规则的分卷文件 (aa, ab, ac...)"
1011 exit 1
1112fi
1213
13- echo " 正在合并并解压文件..."
14+ echo " 正在合并并解压文件(过滤 macOS 冗余文件) ..."
1415
15- # cat: 合并所有分卷
16- # tar -x: 解压
17- cat ${INPUT_PREFIX} * | tar -xzf -
16+ # 3. 执行解压
17+ # --exclude='._*':排除所有以 ._ 开头的元数据文件
18+ # --exclude='.DS_Store':排除 Mac 的文件夹索引文件
19+ cat $( ls ${INPUT_PATTERN} | sort) | tar --warning=no-unknown-keyword --exclude=' ._*' --exclude=' .DS_Store' -xzf -
1820
19- echo " 解压完成!文件夹 '$TARGET_DIR ' 已还原。"
21+ # 4. 检查并进行二次清理
22+ if [ -d " $TARGET_DIR " ]; then
23+ # 强制清理:以防有些特殊路径的隐藏文件没被 tar 过滤掉
24+ find " $TARGET_DIR " -name " ._*" -delete
25+ find " $TARGET_DIR " -name " .DS_Store" -delete
26+
27+ echo " 解压完成!文件夹 '$TARGET_DIR ' 已还原,垃圾文件已清理。"
28+ else
29+ echo " 错误:解压已运行,但在当前目录下未找到 '$TARGET_DIR '。"
30+ fi
You can’t perform that action at this time.
0 commit comments