#!/bin/bash

# =================================================================
# 功能: 批量替换域名，保留大小写/权限/归属，使用日期戳备份
# =================================================================

# 定义日期戳（仅保留到日）和日志名
DATE_STAMP=$(date +%Y%m%d)
LOG_FILE="modification_${DATE_STAMP}.log"
BACKUP_EXT="${DATE_STAMP}.bak"
TARGET_DIR="."

echo "--- 任务开始: $(date) ---" | tee -a "$LOG_FILE"
echo "目标目录: $TARGET_DIR" | tee -a "$LOG_FILE"
echo "备份后缀: .$BACKUP_EXT" | tee -a "$LOG_FILE"

# 查找包含关键字的文件
# -I 忽略二进制文件; -l 只列出文件名; -i 忽略大小写
files=$(grep -riIl "PDHonline.com" "$TARGET_DIR" \
    --exclude="$LOG_FILE" \
    --exclude="*.sh" \
    --exclude="*.$BACKUP_EXT")

if [ -z "$files" ]; then
    echo "未发现匹配的内容，无需执行修改。" | tee -a "$LOG_FILE"
    exit 0
fi

for file in $files; do
    echo "正在处理: $file" | tee -a "$LOG_FILE"

    # 1. 记录修改前的内容到日志（带行号）
    echo "[原始内容 - $file]" >> "$LOG_FILE"
    grep -nEi "pdhcenter\.com" "$file" >> "$LOG_FILE"

    # 2. 创建日期戳备份并保留原始属性 (-p 保留权限、所有者、时间戳)
    # 如果同一天多次运行，此操作会覆盖当天的旧备份，确保回滚到当天最初状态
    cp -p "$file" "${file}.${BACKUP_EXT}"

    # 3. 执行替换 (分三种常见大小写模式)
    sed -i \
        -e 's/pdhcenter\.com/pdhonline\.com/g' \
        -e 's/PDHcenter\.com/PDHonline\.com/g' \
        -e 's/PDHCENTER\.COM/PDHONLINE\.COM/g' \
        "$file"

    # 4. 再次强力同步属性（防止 sed 更改了所有者或权限）
    chown --reference="${file}.${BACKUP_EXT}" "$file"
    chmod --reference="${file}.${BACKUP_EXT}" "$file"

    echo "状态: 修改完成且属性已对齐。" >> "$LOG_FILE"
    echo "------------------------------------------" >> "$LOG_FILE"
done

echo "操作完成。详情请参阅 $LOG_FILE"
