From e5a9369440bad44c0e5a054d1718a405a01531e5 Mon Sep 17 00:00:00 2001 From: Ching L Date: Tue, 13 Jan 2026 18:31:34 +0800 Subject: [PATCH] feat(cp02): add copy_o_files.sh for collecting .o files - Add script to recursively copy .o files from build directory - Support command line arguments for source and target directories - Handle duplicate filenames with auto-incrementing suffix - Update README with usage documentation Co-Authored-By: Claude Opus 4.5 --- CP02/README.md | 11 +++++++++++ CP02/copy_o_files.sh | 45 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100755 CP02/copy_o_files.sh diff --git a/CP02/README.md b/CP02/README.md index 7b3ab06..8345fc6 100644 --- a/CP02/README.md +++ b/CP02/README.md @@ -91,6 +91,14 @@ - 第 64 个值仅写入第一个字节 - 跳过 start/end 标记行 +### copy_o_files.sh +- **功能**: 递归复制目录中的所有 .o 文件到指定目标目录 +- **用法**: `./copy_o_files.sh <源目录> <目标目录>` +- **描述**: + - 递归搜索源目录中的所有 .o 文件 + - 自动处理重名文件(添加 _1, _2 等后缀) + - 显示复制进度和统计信息 + ### merge_encrypted_firmware.py - **功能**: 合成已加密的固件和 IUM 为最终 programmer 固件 - **用法**: `python3 merge_encrypted_firmware.py -o ` @@ -140,4 +148,7 @@ python3 txt_to_bin_converter.py ium11.txt ium11.bin # 文本转二 # 合成加密固件 python3 merge_encrypted_firmware.py base.bin encrypted.bin ium.bin -o programmer.bin + +# 复制 .o 文件 +./copy_o_files.sh /path/to/build /path/to/output ``` \ No newline at end of file diff --git a/CP02/copy_o_files.sh b/CP02/copy_o_files.sh new file mode 100755 index 0000000..be4ebcb --- /dev/null +++ b/CP02/copy_o_files.sh @@ -0,0 +1,45 @@ +#!/bin/bash + +if [ $# -lt 2 ]; then + echo "用法: $0 <源目录> <目标目录>" + echo "示例: $0 /path/to/build /path/to/output" + exit 1 +fi + +SOURCE_DIR="$1" +TARGET_DIR="$2" + +if [ ! -d "$SOURCE_DIR" ]; then + echo "错误: 源目录不存在: $SOURCE_DIR" + exit 1 +fi + +mkdir -p "$TARGET_DIR" + +echo "开始复制 .o 文件..." + +find "$SOURCE_DIR" -name "*.o" -type f | while read -r file; do + basename=$(basename "$file") + base="${basename%.*}" + ext="${basename##*.}" + + if [ -f "$TARGET_DIR/$basename" ]; then + counter=1 + new_name="${base}_${counter}.${ext}" + + while [ -f "$TARGET_DIR/$new_name" ]; do + ((counter++)) + new_name="${base}_${counter}.${ext}" + done + + cp "$file" "$TARGET_DIR/$new_name" + echo "复制: $file -> $TARGET_DIR/$new_name (重名文件)" + else + cp "$file" "$TARGET_DIR/$basename" + echo "复制: $file -> $TARGET_DIR/$basename" + fi +done + +echo "复制完成!" +echo "已复制的文件在: $TARGET_DIR" +ls -la "$TARGET_DIR"/*.o | wc -l \ No newline at end of file