sort_export_folder.sh
tri les photos d’un dossier et les déplace dans des dossiers mensuels
This commit is contained in:
85
sort_export_folder.sh
Executable file
85
sort_export_folder.sh
Executable file
@@ -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."
|
||||
|
||||
Reference in New Issue
Block a user