#!/usr/bin/env bash
set -euo pipefail

find . -type f \( \
  -iname '*.jpg'  -o -iname '*.jpeg' -o -iname '*.png'  -o -iname '*.gif'  -o \
  -iname '*.webp' -o -iname '*.bmp'  -o -iname '*.svg'  -o -iname '*.ico'  -o \
  -iname '*.tif'  -o -iname '*.tiff' -o -iname '*.avif' -o -iname '*.heic' \
\) -print0 |
while IFS= read -r -d '' f; do
  dir="$(dirname -- "$f")"
  base="$(basename -- "$f")"

  lower="$(printf '%s' "$base" | tr '[:upper:]' '[:lower:]')"

  # 只要转换前后不一样，就说明包含大写
  if [[ "$base" != "$lower" ]]; then
    dst="$dir/$lower"

    # 避免覆盖
    if [[ -e "$dst" ]]; then
      echo "SKIP exists: $dst"
      continue
    fi

    cp -p -- "$f" "$dst"
    echo "COPY: $f -> $dst"
  fi
done