Renommer automatiquement des fichiers sous Linux avec un script Bash
Renommer automatiquement des fichiers sous Linux avec un script Bash Quand on travaille avec des centaines d’images ou de fichiers (SEO, e-commerce, médias…), avoir des noms propres est essentiel : ❌ Accents (é, à, ç) ❌ Espaces ❌ Caractères spéciaux ❌ Majuscules incohérentes Tout ça peut nuire au SEO, casser des URL, ou poser problème sur certains serveurs. Heureusement, il existe une solution simple et puissante : un script Bash automatisé. Le script complet Voici le script que tu utilises : find . -maxdepth 1 -type f | while read file; do dir=$(dirname « $file ») base=$(basename « $file ») name= »${base%.*} » ext= »${base##*.} » new=$(printf ‘%s’ « $name » \ | iconv -f UTF-8 -t ASCII//TRANSLIT \ | tr ‘[:upper:]’ ‘[:lower:]’ \ | sed -E ‘s/[[:space:]]+/-/g’ \ | sed -E ‘s/[.]+/-/g’ \ | sed -E ‘s/[^a-z0-9_-]+/-/g’ \ | sed -E ‘s/-+/-/g’ \ | sed -E ‘s/^[-_]+|[-_]+$//g’) newfile= »$dir/$new.$ext » if [ « $file » != « $newfile » ]; then mv -n « $file » « $newfile » echo « $base -> $(basename « $newfile ») » fi done À quoi sert ce script ? Ce script permet de : Supprimer les accents Transformer en minuscules Remplacer les espaces par des tirets Nettoyer les caractères spéciaux Garder une structure SEO-friendly Exemple :Photo été 2024.JPG devient :photo-ete-2024.jpg Explication simple (ligne par ligne) 1. Recherche des fichiers find . -maxdepth 1 -type f Cherche tous les fichiers dans le dossier actuel (sans sous-dossiers) 2. Boucle sur chaque fichier while read file; do Traite les fichiers un par un 3. Récupération des infos dir=$(dirname « $file ») base=$(basename « $file ») name= »${base%.*} » ext= »${base##*.} » On découpe : dossier nom du fichier nom sans extension extension 4. Nettoyage du nom Suppression des accents iconv -f UTF-8 -t ASCII//TRANSLIT « é » → « e » Passage en minuscules tr ‘[:upper:]’ ‘[:lower:]’ « IMAGE.JPG » → « image.jpg » Remplacement des espaces sed -E ‘s/[[:space:]]+/-/g’ « mon image » → « mon-image » Remplacement des points sed -E ‘s/[.]+/-/g’ évite les erreurs SEO / URL Suppression caractères spéciaux sed -E ‘s/[^a-z0-9_-]+/-/g’ garde uniquement : lettres chiffres tirets underscores Nettoyage des tirets multiples sed -E ‘s/-+/-/g’ « image—test » → « image-test » Suppression des tirets au début/fin sed -E ‘s/^[-_]+|[-_]+$//g’ « -image- » → « image » 5. Création du nouveau nom newfile= »$dir/$new.$ext » 6. Renommage sécurisé mv -n « $file » « $newfile » -n = ne remplace pas si le fichier existe déjà 7. Affichage echo « $base -> $(basename « $newfile ») » Affiche les changements Pourquoi c’est ultra puissant ? Ce script est parfait pour : SEO images Google préfère : depannage-auto-paris.jpg plutôt que : IMG_8392.JPG Sites web (WordPress, Astro, etc.) URLs propres Meilleur référencement Moins d’erreurs serveur Gain de temps énorme Au lieu de renommer 200 fichiers à la main : 1 seule commande = tout est clean Conseils importants Toujours tester avant Ajoute un echo au lieu de mv : echo mv « $file » « $newfile » Pour voir ce qui va se passer Faire une sauvegarde Toujours copier tes fichiers avant : cp -r images images_backup Tester sur un petit dossier Amélioration possible (niveau pro) Tu peux ajouter : Numérotation automatique Sous-dossiers Export CSV des changements IA pour renommer intelligemment (SEO) Conclusion Ce script est une arme ultra puissante pour : nettoyer des fichiers améliorer ton SEO automatiser ton workflow sur Plesk / Linux Simple, rapide, efficace.
Renommer automatiquement des fichiers sous Linux avec un script Bash Lire la suite »

