スクリーンショットのリネームshellscript

#!/bin/bash

# スクリーンショットファイル名を変換するスクリプト
# 変換前: スクリーンショット 2026-01-11 18.44.15.png
# 変換後: 20260111184415.png

# 対象ディレクトリ(引数がなければカレントディレクトリ)
TARGET_DIR="${1:-.}"

# ドライラン(-n オプションで実行時は変更せずプレビューのみ)
DRY_RUN=false
if [[ "$1" == "-n" ]]; then
    DRY_RUN=true
    TARGET_DIR="${2:-.}"
fi

cd "$TARGET_DIR" || exit 1

count=0

for file in スクリーンショット\ *.png; do
    # ファイルが存在しない場合はスキップ
    [[ -e "$file" ]] || continue
    
    # ファイル名から日時部分を抽出して変換
    # "スクリーンショット 2026-01-11 18.44.15.png" → "20260111184415.png"
    new_name=$(echo "$file" | sed -E 's/スクリーンショット ([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2})\.([0-9]{2})\.([0-9]{2})\.png/\1\2\3\4\5\6.png/')
    
    if [[ "$file" != "$new_name" ]]; then
        if $DRY_RUN; then
            echo "[プレビュー] $file → $new_name"
        else
            mv -n "$file" "$new_name"
            echo "変換: $file → $new_name"
        fi
        ((count++))
    fi
done

if [[ $count -eq 0 ]]; then
    echo "変換対象のファイルが見つかりませんでした"
else
    if $DRY_RUN; then
        echo "---"
        echo "$count 件のファイルが変換対象です(プレビューモード)"
    else
        echo "---"
        echo "$count 件のファイルを変換しました"
    fi
fi