Skip to content

Commit 166f89d

Browse files
committed
fix: update extract scripts
1 parent e1b0544 commit 166f89d

1 file changed

Lines changed: 21 additions & 10 deletions

File tree

extract_ths_tool_cache/extract.sh

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,30 @@
11
#!/bin/bash
22

3-
# 定义切分文件的前缀
3+
# 1. 定义变量
44
TARGET_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
1112
fi
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

0 commit comments

Comments
 (0)