Skip to content

Instantly share code, notes, and snippets.

@Bludwarf
Last active March 26, 2023 17:19
Show Gist options
  • Save Bludwarf/d5b6ffc79080417809a70b961cbd14b2 to your computer and use it in GitHub Desktop.
Save Bludwarf/d5b6ffc79080417809a70b961cbd14b2 to your computer and use it in GitHub Desktop.
#!/bin/sh
# Prend chaque fichier commençant par 8 chiffres et le déplace dans le sous-dossier correspondant.
#
# Exemple :
#
# Le fichier :
#
# 20201229_100822 - Théo danse en cuisinant.mp4
#
# Sera placé dans l'arborscence suivante :
#
# └───2020
# └───20201229
# 20201229_100822 - Théo danse en cuisinant.mp4
# Peut être automatisé en ajoutant un batch avec le code suivant dans le dossier `shell:sendto` :
#
# bash "D:\\Scripts\\Creer sous repertoires.sh" %*
#
# Source : https://superuser.com/a/1070913
# ls : `-p` pour ajouter un / devant chaque répertoire
# grep : `-v /` pour supprimer les répertoires (commencent par '/')
# sed : pour extraire les 8 premiers caractères (si ce sont bien des chiffres) de chaque fichier
# `-r` : pour utiliser les ExpReg sans échappements compliqués
# `-n /p` : pour n'afficher que les lignes filtrées
for i in *
do
# On ne prend que les fichiers
if [ -f "$i" ]; then
echo "Traitement du fichier $i..."
date=""
# Et uniquement ceux commençant par 8 chiffres...
if [[ $i =~ ^([0-9]{8}) ]]; then
date=${BASH_REMATCH[1]}
# ... ou les images WhatsApp
elif [[ $i =~ ^IMG-([0-9]{8}) ]]; then
date=${BASH_REMATCH[1]}
# Sinon
else
echo " Fichier ignoré."
fi
# Répertoires cibles
if [[ -n $date ]]; then
dir1=`echo $date | cut -c 1-4 -`
dir2=`echo $date | cut -c 1-8 -`
echo " Fichier déplacé dans le répertoire $dir1/$dir2."
mkdir -p $dir1
mkdir -p $dir1/$dir2
mv "$i" $dir1/$dir2
fi
fi
done
echo "Terminé"
# On fait une pause pour avoir le temps de lire le rapport
read
@echo off
REM %~dp1 ajoute un "\" … la fin ce qui pose problŠme … exiftool
REM On ajoute donc "." pour avoir "\.", ce qui convient … exiftool
REM Source : https://stackoverflow.com/questions/3160058/how-to-get-the-path-of-a-batch-script-without-the-trailing-backslash-in-a-single?rq=1
set srcdir="%~dp1."
echo D‚marrage du traitement du dossier %srcdir%
REM Pour éviter l'erreur "CMD ne prend pas les chemins UNC comme r‚pertoires en cours."
REM Source : https://stackoverflow.com/a/34182234/1655155
@pushd %~dp1
REM Tri des fichiers renommés (idem v1)
REM TODO : cd renvoie cette erreur sur le blucloud :
REM '\\blucloud\Public\A trier\BluBook\Backup\Bludwarf\Pictures\Mes Photos\test\.'
REM
REM piste : https://stackoverflow.com/questions/9013941/how-to-run-batch-file-from-network-share-without-unc-path-are-not-supported-me
cd /D %srcdir%
"C:\\Program Files\\Git\\git-bash.exe" "D:\\Scripts\\Creer sous repertoires.sh" %*
@popd
REM pause
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment