Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

suppression de caractères accentués dans des noms de fichiers et dossiers

6 réponses
Avatar
Marco PLAUT
Bonjour,
Je cherche un moyen pour éliminer tous les accents contenu dans les
fichiers et sous dossiers d'un repertoire. Mais cela ne peut pas être
fait manuellement vu le nombre de fichier accentués. Connaitriez-vous une
solution (application graphique ou commande) pour enlever tous ces accents
? Merci.
Marco

6 réponses

Avatar
R12y
On Mon, 10 Oct 2005 15:56:52 +0200, Marco PLAUT wrote:

Bonjour,


Bonjour

Je cherche un moyen pour éliminer tous les accents contenu dans les
fichiers et sous dossiers d'un repertoire.


Moi j'ai fait ceci:
http://groups.google.fr/group/fr.comp.lang.python/msg/21a5546bb912786e


--
Rakotomandimby Mihamina,
http://aspo.rktmb.org/activites/infogerance
Serveurs* sous Debian, Fedora...
(*) Serveurs!?: http://fr.search.yahoo.com/search?p=serveurs+dedies

Avatar
Prakash Countcham
Bonjour,

R12y writes:
Je cherche un moyen pour éliminer tous les accents contenu dans les
fichiers et sous dossiers d'un repertoire.


Moi j'ai fait ceci:
http://groups.google.fr/group/fr.comp.lang.python/msg/21a5546bb912786e


Tu peux aussi essayer cette ligne de shell :

for i in * ; do mv $i `echo $i | tr "àçéèêëîïôöùü ÂÇÉÈÊËÎÏÔÖÙÜ" "aceeeeiioouuACEEEEIIOOUU"`; done

Amicalement,

--
Prakash


Avatar
R12y
Je cherche un moyen pour éliminer tous les accents contenu dans les
fichiers et sous dossiers d'un repertoire.
Moi j'ai fait ceci:

http://groups.google.fr/group/fr.comp.lang.python/msg/21a5546bb912786e
Tu peux aussi essayer cette ligne de shell :

for i in * ; do mv $i `echo $i | tr "àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ" "aceeeeiioouuACEEEEIIOOUU"`; done


Oui, mais ce n'est pas recursif (ça ne déscend pas das les sous
répertoires).

C'est facilement possible de faire avec ZSH aussi mais il faut gérer les
cas ou on renomme un répertoire.

De toutes façon, il semble que fr.comp.os.unix soit plus adapté, ou alors
le groupe du langage dans lequel on décide de faire la chose.

--
Rakotomandimby Mihamina,
http://aspo.rktmb.org/activites/infogerance
Serveurs* sous Debian, Fedora...
(*) Serveurs!?: http://fr.search.yahoo.com/search?p=serveurs+dedies



Avatar
nicolas
On Mon, 10 Oct 2005 15:56:52 +0200, Marco PLAUT wrote:

Je cherche un moyen pour éliminer tous les accents contenu dans les
fichiers et sous dossiers d'un repertoire. Mais cela ne peut pas être
fait manuellement vu le nombre de fichier accentués. Connaitriez-vous une
solution (application graphique ou commande) pour enlever tous ces accents
? Merci.


konwert et recode sont tes amis, ainsi que find et son option -exec.
Pour les renommer, utilise ce script (récursif, et à adapter car pour le
moment il se contente de renommer en minuscules) :

cat bin/tolower.sh
#!/bin/bash


echo "Entering `pwd`"
read

for i in *
do
if [ -d $i ]
then
cd $i
tolower.sh
cd ..
fi
# Change the first "echo" below in "mv" to make the script an auto lower case renamer
echo $i `echo $i|tr [:upper:] [:lower:]`
done

# Peut se faire avec la seule ligne suivante adaptée :
# find / -type f -exec mv {} `echo {} | sed -e "s/ //g"` ;

nicolas patrois : pts noir asocial
--
SPROTCH !

P : Non, y a rien de plus immonde que de chier sur la moquette...
M : Pas d'accord... A pire... Chier sous la moquette...
H : ?!!

Avatar
lhabert
Prakash Countcham :

mv $i `echo $i | tr "àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ" "aceeeeiioouuACEEEEIIOOUU"`


Tu te fais avoir si $i contient des caractères membres de IFS, ou des
caractères de glob, ou des caractères interprétés par echo, ou si $i
commence par un « - », ou si il se termine par un n. Il faudrait donc faire
quelque chose comme :

j=`tr ....<<EOF
${i}a
EOF
`
j=${j%a}
mv -- "$i" "$j"

Avatar
Cem
Le 10-10-2005, Marco PLAUT a écrit :
Je cherche un moyen pour éliminer tous les accents contenu dans les
fichiers et sous dossiers d'un repertoire. Mais cela ne peut pas être
fait manuellement vu le nombre de fichier accentués. Connaitriez-vous une
solution (application graphique ou commande) pour enlever tous ces accents



Je propose (sans garantie bien sûr) le script bash suivant

---------------------------------------------------
#!/bin/bash

# A compléter si nécessaire
lettre_av_acc="àçéèêëîïôöùüÂÇÉÈÊËÎÏÔÖÙÜ"
lettre_ss_acc="aceeeeiioouuACEEEEIIOOUU"

function relinke()
{
local f
read -r f
while [ "$f" != "EOF" ]; do
ln -sf "$1" "$f"
read -r f
done
}

function renomme ()
{
local f f1
read -r f
while [ "$f" != "EOF" ]; do
f1=`echo "$f"|sed -e "y/${lettre_av_acc}/${lettre_ss_acc}/"`
mv "$f" "$f1"
{
find -lname "${f#./}"
echo EOF
} | relinke "${f1#./}"
read -r f
done
}



# phase 1: renommer les répertoires
{
find -type d -name "*[$lettre_av_acc]*"
echo "EOF"
} | renomme

# phase 2: renomme les autres fichiers
{
find ! -type d -name "*[$lettre_av_acc]*"
echo "EOF"
} | renomme
---------------------------------------------------

Il serait sage de le tester d'abord en remplaçant les lignes
mv "$f" "$f1"
ln -sf "$1" "$f"
par
echo "mv "$f" "$f1""
echo "ln -sf "$1" "$f""

Histoire de voir si ça ne fait pas de bêtise...

[xp et fu2 chez fr.comp.os.unix plus adapté]