Voici un exemple Automator workflow qui atteint l'objectif défini de votre question en utilisant sa structure de dossiers hiérarchique :
NOTE : Bien que le code bash
exemple utilisé dans l'Action Exécuter un script Shell du workflow se soit terminé avec succès, il est de la responsabilité de l'utilisateur de s'assurer que des sauvegardes appropriées existent avant de l'utiliser. Je recommanderais même de faire une petite copie de test de la structure de dossier hiérarchique cible avant d'exécuter le workflow sur l'original.
Pour tester ce workflow, la structure de dossier hiérarchique suivante avec ses fichiers a été créée :
$ tree ./Applications
./Applications
MCP19-00633 - Sport and Play at Br
Attachments
barfoo.png
filename.jpg
filename.png
foobar.jpg
MCP19-00753 - Active Nabiac
Attachments
barfoo.png
filename.jpg
filename.png
foobar.jpg
MCP19-00824 - A Family Friendly Ve
Attachments
barfoo.jpg
barfoo.png
filename.jpg
filename.png
foobar.jpg
namefile.jpg
namefile.png
6 répertoires, 15 fichiers
$
Les résultats de l'Automator workflow exécuté sur la cible ci-dessus :
$ tree ./Applications
./Applications
MCP19-00633 - Sport and Play at Br
MCP19-00633 - Sport and Play at Br (1).jpg
MCP19-00633 - Sport and Play at Br (1).png
MCP19-00633 - Sport and Play at Br.jpg
MCP19-00633 - Sport and Play at Br.png
MCP19-00753 - Active Nabiac
MCP19-00753 - Active Nabiac (1).jpg
MCP19-00753 - Active Nabiac (1).png
MCP19-00753 - Active Nabiac.jpg
MCP19-00753 - Active Nabiac.png
MCP19-00824 - A Family Friendly Ve
MCP19-00824 - A Family Friendly Ve (1).jpg
MCP19-00824 - A Family Friendly Ve (1).png
MCP19-00824 - A Family Friendly Ve (2).jpg
MCP19-00824 - A Family Friendly Ve (2).png
MCP19-00824 - A Family Friendly Ve (3).jpg
MCP19-00824 - A Family Friendly Ve.jpg
MCP19-00824 - A Family Friendly Ve.png
3 répertoires, 15 fichiers
$
L'image ci-dessous de l'exemple Automator workflow contient les actions utilisées et leurs paramètres spécifiques utilisés à partir de leurs valeurs par défaut. Assurez-vous de correspondre aux paramètres affichés dans l'image. En particulier, l'Action Obtenir le contenu du dossier a la case à cocher [] Répéter pour chaque sous-dossier trouvé cochée, et l'Action Exécuter un script Shell a Transmettre l'entrée : défini sur comme arguments.
Exemple bash
code :
for f in "$@"; do
[[ -f $f ]] || continue
ext="${f##*.}"
move_to_dir="$(dirname "$(dirname "$f")")"
filename="$(basename "$move_to_dir")"
cd "$move_to_dir" || exit
if [[ ! -e ${filename}.${ext} ]]; then
mv "$f" "${filename}.${ext}"
else
n=1
for i in "${filename}" *".${ext}"; do
if [[ "${filename} (${n}).${ext}" == "$i" ]]; then
n=$(( n + 1 ))
fi
done
mv "$f" "${filename} (${n}).${ext}"
fi
done
for d in "$@"; do
[[ -d $d ]] || continue
[[ $(basename "$d") == Attachments ]] || continue
rmdir "$d"
done
Note : Le code bash
exemple est simplement un exemple et ne contient que peu de gestion des erreurs, et a été vérifié en utilisant ShellCheck. Cependant, il peut ne pas contenir toute la gestion des erreurs appropriée nécessaire ou voulue. Il incombe à l'utilisateur d'ajouter toute gestion des erreurs selon ce qui est approprié, nécessaire ou souhaité.