Scripts example

find . -name "*.md" -type f -exec grep -lE "Finished" {} + | while read file; do
  if ! grep -q "2025-05-31" "$file"; then
    number=$(awk '/^pages: [0-9]+/ {print $2}' "$file")
    if [ -n "$number" ]; then
      sed -i "/Finished/i\\- 2025-05-31: $number" "$file"
      echo "已处理: $file - 插入: - 2025-05-31: $number"
    else
      echo "跳过: $file (未找到pages数字或有效日期)"
    fi
  else
    echo "排除: $file (包含 2025-05-31)"
  fi
done
# 创建备份和日志
backup_dir="backup_$(date +%Y%m%d)"
mkdir -p "$backup_dir"
log_file="replace_log.txt"

echo "开始替换操作 $(date)" > "$log_file"

find . -name "*.md" -type f | while read file; do
    # 检查文件是否包含目标字符串
    if grep -q "- 2025-06-01: Finished" "$file"; then
        # 创建备份
        cp "$file" "$backup_dir/$(basename "$file")"
        # 执行替换
        sed -i 's/- 2025-06-01: Finished/- 2025-05-31: Finished/g' "$file"
        # 记录日志
        echo "已修改: $file" >> "$log_file"
        # 显示变更
        echo "=== $file 修改内容 ==="
        diff "$backup_dir/$(basename "$file")" "$file" || true
    else
        echo "无修改: $file" >> "$log_file"
    fi
done

echo "操作完成,备份在 $backup_dir,日志见 $log_file"
find . -name "*.md" -type f -exec grep -l "lists: book" {} + | \
while read file; do
    if ! grep -q "Finished" "$file"; then
        # 确保文件末尾有空行(避免追加内容粘连)
        [ -n "$(tail -c 1 "$file")" ] && echo >> "$file"
        # 追加内容
        echo "- 2025-06-01: Finished" >> "$file"
        echo "已处理: $file"
    else
        echo "跳过: $file (已包含 Finished)"
    fi
done
find . -name "*.md" -type f -exec grep -L "Finished" {} + | while read file; do
    awk 'BEGIN {done=0} /^---/ && !done {print; print "- 2025-06-01: Finished"; done=1; next} 1' "$file" > tmp && mv tmp "$file"
done