J'ai écrit un petit script qui permet de renommer en masse les fichiers présentant des problèmes avec les caractères accentués.
Par exemple, vous recevez ou téléchargez une archive zip faite sur Windows. A la décompression sur Ubuntu, les caractères accentués sont mal restitués (codage différent de UTF-8). L'une des solutions est de renommer manuellement les fichiers s'ils sont peu nombreux ... l'autre est d'utiliser un script qui automatise le renommage.
Le script permet de balayer les différents codages de caractères susceptibles d'être à l'origine des noms de fichiers, et de simuler la conversion vers le codage UTF-8. Si le bon codage d'origine est trouvé (visuellement), on peut alors passer à la conversion réelle des noms de fichiers du répertoire, ou même de façon récursive.
EDIT du 10/03/2010 :
Hizoka s'est joint à moi pour traiter ce problème de noms de fichiers invalides, en proposant une variante du script qui affiche **en couleur** les caractères invalides et les caractères convertis.
Lien pour le script de Lapogne71 (le mien) :
http://lapogne.free.fr/files/shell/convmv-for-utf-8/convmv-for-utf-8_0.04.sh
Avantages : - rapide à l'exécution même si nombreux fichiers à traiter
Inconvénients : - pas de couleurs ! 🙂
Lien pour le script de Hizoka :
http://lapogne.free.fr/files/shell/convmv-for-utf-8/convmv-for-utf-8-hizoka_0.04.sh
Avantages : - les couleurs dans les noms de fichiers permettent de localiser rapidement les caractères à traiter
Inconvénients : - un peu plus lent à l'exécution si nombreux fichiers à traiter
Exemples de traitements :
Mauvais codage (script Lapogne71) :
Bon codage (script Lapogne71) :
Mauvais codage (script Hizoka) :
Bon codage (script Hizoka) :
Pour les curieux ou ceux qui veulent tester sans risques, j'ai mis en ligne 2 exemples de fichiers zip à décompresser et traiter. Essayez avec l'un et l'autre script 🙂 :
convmv-for-utf-8_test_A.zip
convmv-for-utf-8_test_B.zip
Tous commentaires, suggestions, corrections, critiques sont les bienvenus ! 🙂
Edit pour rappeler comment l'utiliser les scripts :
La méthode que j'utilise est toute simple :
- copier le script dans le dossier contenant les fichiers à renommer
- ouvrir un terminal et se placer dans ce dossier
- exécuter la commande
bash nom_du_script.sh
Je ne gère pas les chemins dans mon script, il faut donc le copier dans le dossier contenant les fichiers à renommer ... (ce qui évite aussi d'avoir à entrer des chemins en argument dans la ligne de commande)