Script de suppression des caractères accentué
padz
-
Liloulinx -
Liloulinx -
Bonjour,
je cherche (depuis 2 jours) un shell script qui permette de supprimer les caractères accentués dans mes noms de fichier. j'ai trouvé du php, du python, du perl, du javascript, mais pas shell script.
Or : je n'arrive pas à croire que ca n'ait pas été fait déjà ??!!:):)
merci à tous.
je cherche (depuis 2 jours) un shell script qui permette de supprimer les caractères accentués dans mes noms de fichier. j'ai trouvé du php, du python, du perl, du javascript, mais pas shell script.
Or : je n'arrive pas à croire que ca n'ait pas été fait déjà ??!!:):)
merci à tous.
A voir également:
- Enlever les accents python
- Forcer suppression fichier - Guide
- Script vidéo youtube - Guide
- Caractères spéciaux - Guide
- Caractères ascii - Guide
- Caracteres speciaux - Guide
6 réponses
Méthode avec "sed" :
[lol]$ ls -1
bîbïBÔö.txt
ÇàVÀ.txt
GÉGÉ.txt
màmÀ.txt
mémé.txt
ùlûlü.txt
[lol]$ for i in $(ls *.txt);do mv ${i} $(echo "$i" |sed 'y/àçéèëêïîöôùüûÀÇÉÈËÊÏÎÖÔÙÜÛ/aceeeeiioouuuACEEEEIIOOUUU/');done
[lol]$ ls -1
bibiBOo.txt
CaVA.txt
GEGE.txt
mamA.txt
meme.txt
ululu.txt
[lol]$Méthode avec "tr" :[lol]$ ls -1
bîbïBÔö.txt
ÇàVÀ.txt
GÉGÉ.txt
màmÀ.txt
mémé.txt
ùlûlü.txt
[lol]$ for i in $(ls *.txt);do mv ${i} $(echo "$i" |tr 'àçéèëêïîöôùüûÀÇÉÈËÊÏÎÖÔÙÜÛ' 'aceeeeiioouuuACEEEEIIOOUUU');done
[lol]$ ls -1
bibiBOo.txt
CaVA.txt
GEGE.txt
mamA.txt
meme.txt
ululu.txt
[lol]$;-))
Salut,
Tu peux faire ça soit avec la commande "tr" soit avec "sed" :
;-))
Tu peux faire ça soit avec la commande "tr" soit avec "sed" :
tr 'àçéèëêïîöôùüûÀÇÉÈËÊÏÎÖÔÙÜÛ' 'aceeeeiioouuuACEEEEIIOOUUU' sed 'y/àçéèëêïîöôùüûÀÇÉÈËÊÏÎÖÔÙÜÛ/aceeeeiioouuuACEEEEIIOOUUU/'Libre à toi d'adapter l'une ou l'autre dans ton script...
;-))
The dos2unix utility converts characters in the DOS extended character set to the corresponding ISO standard characters
je ne peux pas tester, mais je crois me souivenir que oui, bien que la queston du sujet soit "supprimmer" et pas convertir
je ne peux pas tester, mais je crois me souivenir que oui, bien que la queston du sujet soit "supprimmer" et pas convertir
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci pour ces réponses ;)
pour les commandes "tr" et "sed", jai essayé mais ca n'a pas l'air de marcher (je perds l'invite, ca clignote puis rien)
(J'ai essayé à la fois en passant directement la commande dans une fenêtre terminal et dans un script).
Aurais-je loupé un étage ?
pour les commandes "tr" et "sed", jai essayé mais ca n'a pas l'air de marcher (je perds l'invite, ca clignote puis rien)
(J'ai essayé à la fois en passant directement la commande dans une fenêtre terminal et dans un script).
Aurais-je loupé un étage ?
Bonjour,
J'ai rédigé rapidement le script ci-dessous mais il ne marche pas avec des nom de fichiers qui ont des espaces. Avez-vous une idée comment l'améliorer ? Le problème est dans le
J'ai rédigé rapidement le script ci-dessous mais il ne marche pas avec des nom de fichiers qui ont des espaces. Avez-vous une idée comment l'améliorer ? Le problème est dans le
for i in $(ls $nom_rep/)où le i prend chacun des mots qui forment le nom d'un fichier qui contient des espaces au lieu de prendre le nom entier. J'ai mis la commande et le nom entre double-cotes, ça s'est amélioré un peu, mais le pb persiste !
echo "Ce script remplace les caractères accentués des noms des fichiers d'un repertoire donné par des caractères non accentués."
read -p 'Nom du rep (incluant le chemin) : ' nom_rep
echo "Le nom du rep donné est : $nom_rep"
if [ ! -e $nom_rep ]; then
echo "Rep n'existe pas"
else
if [ -d $nom_rep ]; then
for i in $(ls $nom_rep/)
do
echo " tentative of renaming (mouving) of the file $i"
mv $nom_rep/${i} $nom_rep/$(echo $i |sed 'y/ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿ/aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyyby/')
done
else
if [ -f $nom_rep ]; then
echo "Vous avez tapé le nom d'un fichier et nom pas d'un rep"
fi
fi
fi
Le savoir est la seule ressource qui s'accroit lorsqu'on la partage
J'ai rédigé rapidement le script ci-dessous mais il ne marche pas avec des nom de fichiers qui ont des espaces. Avez-vous une idée comment l'améliorer ? Le problème est dans le où le i prend chacun des mots qui forment le nom d'un fichier qui contient des espaces au lieu de prendre le nom entier. J'ai mis la commande et le nom entre double-cotes, ça s'est amélioré un peu, mais le pb persiste !
echo "Ce script remplace les caractères accentués des noms des fichiers d'un repertoire donné par des caractères non accentués." read -p 'Nom du rep (incluant le chemin) : ' nom_rep echo "Le nom du rep donné est : $nom_rep" if [ ! -e $nom_rep ]; then echo "Rep n'existe pas" else if [ -d $nom_rep ]; then for i in $(ls $nom_rep/) do echo " tentative of renaming (mouving) of the file $i" mv $nom_rep/${i} $nom_rep/$(echo $i |sed 'y/ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿ/aaaaaaaceeeeiiiidnoooooouuuuybsaaaaaaaceeeeiiiidnoooooouuuyyby/') done else if [ -f $nom_rep ]; then echo "Vous avez tapé le nom d'un fichier et nom pas d'un rep" fi fi fiBen forcément, on ne boucle jamais sur la sortie de la commande ;-(
Oui, je n'ai pas bien vu. J'ai mis 2 fois le $. C'était lors des tests.
Sinon, je l'ai changé en comme ceci:
#!/bin/bash echo "Ce script remplace les caractères accentués des noms des fichiers d'un repertoire donné par des caractères non accentués." read -p 'Nom du rep (incluant le chemin) : ' nom_rep echo "Le nom du rep donné est : $nom_rep" if [ ! -e $nom_rep ]; then echo "Rep n'existe pas" else if [ -d $nom_rep ]; then for i in $nom_rep/* do echo " Tentative de renomer le fichier $i" nouveau_nom='echo "$i"|sed 'y/àçéèëêïîöôùüûÀÇÉÈËÊÏÎÖÔÙÜÛ/aceeeeiioouuuACEEEEIIOOUUU/'' echo "nouveau_nom= " $nouveau_nom mv "${i}" "$nouveau_nom" done else if [ -f $nom_rep ]; then echo "Vous avez tapé le nom d'un fichier et nom pas d'un rep" fi fi fiCette fois-ci ça marche car dans la ligne correspondant à la commande mv, j'ai mis mes variables de fichier source et fichier destination entre double-quottes.
Merci pour votre aide.