Dans beaucoup de titres de chansons il y a des accents et je souhaiterais les supprimer automatiquement. J'ai écrit une petite fonction en bash que je vous livre.
Code : Tout sélectionner
#!/bin/bash
for i in * # les fichiers du répertoire
do
nom=""; # nouveau nom
typeset -i j="0"; # index des lettres du nom du fichier
while [ $j -ne ${#i} ]; # longueur du nom du fichier
do
case "${i:$j:1}" in # translation
à|â) nom="${nom}a";;
À|Â]) nom="${nom}A";;
é|è|ê|ë) nom="${nom}e";;
É|È|Ê|Ë) nom="${nom}E";;
î|ï) nom="${nom}i";;
Î|Ï) nom="${nom}I";;
ô|ö) nom="${nom}o";;
Ô|Ö) nom="${nom}O";;
ù|û) nom="${nom}u";;
Ù|Û) nom="${nom}U";;
ç) nom="${nom}c";;
Ç) nom="${nom}C";;
*) nom="${nom}${i:$j:1}";;
esac
j=j+1;
done
echo -e " $i = $nom"; # pour tester avant le "mv"
done
echo -e "";
1) c'est toujours le cas *) qui est pris !
2) il semblerait aussi x|y) ne fonctionne pas. Je l'ai testé avec x) et y) qui eux fonctionnent.
Autre chose ne fonctionnant pas non plus.
Code : Tout sélectionner
tr '[àâäéèêëôöîïùûü]' '[aaaeeeeiioouuu]'
et
sed 'y/àâçéèêëôöùüÂÀÇÉÈÊËÎÏÔÖÙÜ/aaceeeeiioouuAACEEEEIIOOUU/'
Une idée ? Ou un autre moyen (léger) de faire cette translation ?