#!/bin/bash


# il faut installer jhead pour extraire les info exif des jpg.
# indiquer le dossier ou se trouvent les photos recupérées par testdisk(à faire pour chaque dossiers un par un).
#exemple: ./trie.sh /media/recup_dir.1 /media/sauvegarde
#
# pour chaque photo qui a une date exif il va la déplacer dans un dossier année_mois, "/media/sauvegarde/2020_10" .
#


# test si la ligne de commande est correcte.
if [ -z "${1}" ] || [ -z "${2}" ]; then
	echo "il manque des arguments!";
	echo "exemple: ${0} /dossier/source /dossier/destination";
	exit 1;
fi

#test si jhead est installé.
jheadok=$(jhead -V);
if [ "$?" != "0" ]; then
	echo "Le programme jhead n'a pas l'air présent!!";
	exit 1;	
fi


sourceDir=${1};
destDir=${2};

if [ ! -d "${sourceDir}" ]; then
	echo "le dossier source n'existe pas!";
	exit 1;
fi

if [ ! -d "${destDir}" ]; then
	echo "le dossier de destination n'existe pas!";
	exit 1;
fi

cd "$sourceDir";
FICHIERS=$(ls *.jpg);
NBRE_FICHIERS=$(echo $FICHIERS | wc -w);

echo "$NBRE_FICHIERS jpg trouvées";

FICHIERS_T=0;
for i in $FICHIERS; do
	exif=$(jhead -v "${i}");
	
	#cherche la date pour le dossier de destination, seulement année_mois
	d1=$(echo "${exif}" | grep -E "Date/?Time" | grep -Eo -m 1 '(\b[[:digit:]]{4}:[[:digit:]]{2}\b)' | sed 's/:/_/g');
	if [ ! -z "${d1}" ]; then
		#creer le dossier avec la date
		if [ ! -d "${destDir}/${d1}" ]; then
			mkdir -p "${destDir}/${d1}";
		fi
		
		#copie ("cp") ou déplace ("mv") la photo dans le dossier de destination.
		mv "$i" "${destDir}/${d1}/${i}";
		let "FICHIERS_T+=1";
	fi
done;

echo "${FICHIERS_T}/${NBRE_FICHIERS} jpg traitées.";


