suppression de caractères accentués dans des noms de fichiers et dossiers
6 réponses
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
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 : ?!!
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 : ?!!
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 : ?!!
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 :
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 :
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 :
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
# 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é]
Le 10-10-2005, Marco PLAUT <marcoplaut@free.fr> 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
# 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""
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
# 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""