Vous utilisiez une Distribution avec un encodage des noms de fichiers à la norme iso-8859-15 (Mandriva par exemple) et vous passez maintenant sur une distribution gérant les FS avec la norme UTF8 (Ubuntu, Fedora etc) et vous êtes emmerdé avec vos accents dans les noms de fichiers ?
Vite, créez le script convert.sh avec le contenu suivant :
#!/bin/bash
FROM=iso-8859-15
TO=UTF8
EXCLUDE="Ê|Ë|É|È|Â|À|Î|Ï|Ô|Ô|Û|Ù|Ç|Ñ|à|â|é|è|ê|ë|î|ï|ç|ô|ö|û|ù|ñ|°"
convert_a_directory()
{
let l=l+1
export l
echo "Conversion en cours : $(printf "%$l.${l}s") $1" >&2
cd -- "$1"
for fic in *
do
base_fic=$(basename -- "$fic")
if echo "$base_fic" | egrep -e "$EXCLUDE" > /dev/null; then
# echo "$base_fic OK" >&2
continue
fi
rename=$(echo "$base_fic" | iconv -f $FROM -t $TO)
if [ ! "$rename" = "$fic" ]; then
printf " Renommage : \n %s -> \n %s\n\n" "$base_fic" "$rename" >&2
mv "$base_fic" "$rename"
fi
if [ -d "$fic" ]; then
convert_a_directory "$fic"
fi
done
cd ..
let l=l-1
export l
}
convert_a_directory "${*:-"."}"
Rendez le exécutable :
$ chmod +x ./convert.sh
Et lancez le ensuite à l'aide de la manière suivante :
$ ./convert.sh Dev
Conversion en cours : Dev
Conversion en cours : Figure
Conversion en cours : Figure
Conversion en cours : Matrix
Conversion en cours : Matrix
Renommage :
Matrix3D - 17 d?cembre 2001.zip ->
Matrix3D - 17 décembre 2001.zip
Conversion en cours : Matrix v0.1
Conversion en cours : Figure
Conversion en cours : Matrix
Conversion en cours : Matrix v0.2
...
En principe, il est réentrant et il ne convertira pas 2 fois un fichier (si vous faîtes 2 conversions, vous faîtes une corruption sur les accents dans le nom des fichiers).
Le script s'appuie sur la présence de l'utilitaire iconv.
# iconv est dans la glibc (enfin dans le paquet glibc sous mandriva)
Posté par Raphaël G. (site web personnel) . Évalué à 3.
Sinon vous pouvez replacer ça par :
mv "$fic" "$(echo $fic | recode iso8859-15..u8)"
# Locale
Posté par peck (site web personnel) . Évalué à 2.
Attention ca change tout !
# plus simple
Posté par Édouard Geuten (site web personnel) . Évalué à 1.
# convmv -r --nosmart --notest -f iso-8859-1 -t utf8 *
[^] # Re: plus simple
Posté par Édouard Siha . Évalué à 1.
# Merci
Posté par dems . Évalué à 1.
[^] # Re: Merci
Posté par fyah . Évalué à 1.
ça m'enlève une fière chandelle du pied :)
# Il manque l'oe liés (½ et ¼)
Posté par rpnpif . Évalué à 1.
EXCLUDE="Ê|Ë|É|È|Â|À|Î|Ï|Ô|Ô|Û|Ù|Ç|Ñ|à|â|é|è|ê|ë|î|ï|ç|ô|ö|û|ù|ñ|°"
devrait être :
EXCLUDE="Ê|Ë|É|È|Â|À|Î|Ï|Ô|Ô|Û|Ù|Ç|Ñ|à|â|é|è|ê|ë|î|ï|ç|ô|ö|û|ù|ñ|°|¼|½"
'¼' est un caractère que j'utilise assez en français.
Mes 2 sous.
# Et convmv ?
Posté par alfafa . Évalué à 1.
# convmv -f iso-8859-15 -t UTF8 -r
-f = from
-t = to
-r = récursive, pour faire les sous répertoire.
Cette commande fait un test, ajouter --notest pour effectuer les changements.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.