#!/bin/bash shopt -s nullglob # Prevent errors if no files match # Associative array to store unique image bases declare -A unique_images # Extract base names without resolution suffix for file in *.64.png; do base="${file%.64.png}" unique_images["$base"]=1 done # Convert keys to sorted array unique_bases=("${!unique_images[@]}") IFS=$'\n' sorted_bases=($(sort <<<"${unique_bases[*]}")) unset IFS # Renaming process counter=1 for base in "${sorted_bases[@]}"; do for res in 64 128 256; do old_file="${base}.${res}.png" new_file="waifu-${counter}.${res}.png" if [[ -f "$old_file" ]]; then mv "$old_file" "$new_file" echo "Renamed: $old_file -> $new_file" fi done ((counter++)) done echo "Renaming complete."