diff --git a/sort_export_folder.sh b/sort_export_folder.sh new file mode 100755 index 0000000..b29da5e --- /dev/null +++ b/sort_export_folder.sh @@ -0,0 +1,85 @@ +#!/bin/bash + + +fr_months=("Janvier" "Février" "Mars" "Avril" "Mai" "Juin" "Juillet" "Août" "Septembre" "Octobre" "Novembre" "Décembre") + +# Vérifiez si exiftool est installé +if ! command -v exiftool &> /dev/null; then + echo "exiftool n'est pas installé. Veuillez l'installer d'abord." + exit 1 +fi + +# Répertoire contenant les photos +while : +do + read -e -p "Répertoire contenant les photos: " PHOTO_DIR + [ "$PHOTO_DIR" == "q" ] && exit 1 + if [ "$PHOTO_DIR" != "q" ] && [ -d "$PHOTO_DIR" ]; then + break 2 + fi +done + +nb_jpg_before=$(ls -Uba1 "$PHOTO_DIR" | grep -E -c '.jpg|.jpeg|.cr3|.tif|.dng|.webp|.avif'$) +echo "$nb_jpg_before images trouvées dans $PHOTO_DIR" +echo + + +i=0 + +# Parcourir chaque fichier dans le répertoire +for PHOTO in "$PHOTO_DIR"/*; do + # Vérifiez si le fichier est une image + if [[ -f "$PHOTO" ]] && [[ $(file --mime-type -b "$PHOTO") == image/* ]]; then + # Extraire la date de création EXIF + DATE=$(exiftool -d "%Y-%m" -CreateDate -s -s -s "$PHOTO" 2>/dev/null) + + if [[ -n "$DATE" ]]; then + y=$(echo "$DATE" | awk -F"-" '{print $1}') + m=$(echo "$DATE" | awk -F"-" '{print $2}') + else + # image extraite d'une vidéo -> pas de -CreateDate + # 2015-09-11_Daguet_0090.jpg + x=$(basename "$PHOTO" | awk -F"_" '{print $1}') + y=$(echo "$x" | awk -F"-" '{print $1}') + m=$(echo "$x" | awk -F"-" '{print $2}') + fi + + # Si le mois commence par 0, on supprime le 0 + [ ${m:0:1} == "0" ] && m=${m:1} + # L'index du tableau commence par 0, donc on retranche 1 + d=${fr_months["$((m - 1))"]} + month=$(echo "$d $y" | sed 'y/àáâäãåèéêëìíîïòóôöõùúûüÿćčçčďđłńňřśšťžż/aaaaaaeeeeiiiiooooouuuuyccccddlnnrsstzz/') + + # Si la date est extraite avec succès + if [[ -n "$month" ]]; then + # Créer le répertoire pour le mois correspondant + MONTH_DIR="$PHOTO_DIR/$month" + mkdir -p "$MONTH_DIR" + + # Déplacer la photo dans le répertoire du mois + mv "$PHOTO" "$MONTH_DIR/" & + #echo "Déplacé : $PHOTO -> $MONTH_DIR/" + + else + echo "Aucune date EXIF trouvée pour : $PHOTO" + fi + ((++i)) + fi +done + +wait + +echo "Triage de $i photos terminé." + + +nb_jpg_after=$(ls -Uba1 "$PHOTO_DIR" | grep -E -c '.jpg|.jpeg|.cr3|.tif|.dng|.webp|.avif'$) +echo "$nb_jpg_after images trouvées dans $PHOTO_DIR" + +subfolders=$(ls -A "$PHOTO_DIR" | tr '\n' ', ' | sed 's/.$//') + +nb_jpg_id_dest=$(find "$PHOTO_DIR" -mindepth 2 -type f -exec bash -c 'echo ${0%${0#$1}}' {} "$PHOTO_DIR" \; | uniq -c | awk '{print $1}') +echo "$nb_jpg_id_dest images trouvées dans les sous-répertoires $subfolders" + +[ $nb_jpg_after -ne 0 ] && echo "Erreur !! Il reste des photos dans le dossier d'origine." +[ $nb_jpg_before -ne $nb_jpg_id_dest ] && echo "Erreur !! Toutes les photos n'ont pas été déplacées." +