#!/bin/bash
SOURCE="/mnt/s/FOTY/!UNSORT"
DEST="/mnt/s/FOTY/POSORTOWANE"
echo "======================================"
echo " SORTOWANIE ZDJĘĆ"
echo "======================================"
echo "Źródło: $SOURCE"
echo "Cel: $DEST"
echo
COUNT=0
MOVED=0
NO_DATE=0
ERRORS=0
DUPLICATES=0
if [[ ! -d "$SOURCE" ]]; then
echo "BŁĄD: Nie znaleziono katalogu źródłowego:"
echo "$SOURCE"
exit 1
fi
mkdir -p "$DEST"
find "$SOURCE" -type f \( -iname "*.jpg" -o -iname "*.jpeg" \) -print0 |
while IFS= read -r -d '' FILE; do
((COUNT++))
DATE=$(exiftool -s3 -DateTimeOriginal -d "%Y/%m" "$FILE" 2>/dev/null)
# Brak daty EXIF
if [[ -z "$DATE" ]]; then
echo "[BRAK DATY] $FILE"
((NO_DATE++))
continue
fi
YEAR="${DATE%%/*}"
MONTH="${DATE##*/}"
TARGET_DIR="$DEST/$YEAR/$MONTH"
mkdir -p "$TARGET_DIR"
BASENAME=$(basename "$FILE")
TARGET="$TARGET_DIR/$BASENAME"
# Obsługa duplikatu
if [[ -e "$TARGET" ]]; then
((DUPLICATES++))
EXT="${BASENAME##*.}"
NAME="${BASENAME%.*}"
TARGET="$TARGET_DIR/${NAME}_duplikat.${EXT}"
COUNTER=2
while [[ -e "$TARGET" ]]; do
TARGET="$TARGET_DIR/${NAME}_duplikat_${COUNTER}.${EXT}"
((COUNTER++))
done
fi
echo "[PRZENOSZĘ]"
echo " $FILE"
echo " -> $TARGET"
if mv -- "$FILE" "$TARGET"; then
((MOVED++))
else
echo " !!! BŁĄD PRZENOSZENIA !!!"
((ERRORS++))
fi
done
echo
echo "======================================"
echo " ZAKOŃCZONO"
echo "======================================"
echo "Przetworzono: $COUNT"
echo "Przeniesiono: $MOVED"
echo "Brak daty EXIF: $NO_DATE"
echo "Duplikaty: $DUPLICATES"
echo "Błędy: $ERRORS"
echo "======================================"