[bash]Supprimer les accents dans les noms de fichier(résolu)

Applications, problèmes de configuration réseau
Avatar de l’utilisateur
karhu
Maître du Kyudo
Messages : 1199
Inscription : lun. 27 sept. 2010, 14:32
Localisation : Ile de France

Re: [bash]Suppression des accents dans les noms de fichier

Message par karhu »

Le programme

Code : Tout sélectionner

#!/bin/bash
for f in *			# les fichiers du répertoire
do
  f_new=${f};
  f_new=${f_new/é/e}
  f_new=${f_new/É/E}
  f_new=${f_new/ê/e}
  f_new=${f_new/à/a}
  f_new=${f_new/Ç/c}
  echo -e " $f = $f_new";	# pour tester avant le "mv"
done
echo -e "";
Le résultat :

Code : Tout sélectionner

 add_pref = add_pref
 bootest = bootest
 chemin = chemin
 chg_2_mp3.sh = chg_2_mp3.sh
 couleurs.sh = couleurs.sh
 create_splash.sh = create_splash.sh
 ÇyiLÈà = ÇyiLÈà
 dir-bis = dir-bis
 dir-bis~ = dir-bis~
 direct = direct
 direct~ = direct~
 dir.txt = dir.txt
 ê-gœ = ê-gœ
 essai.tcl = essai.tcl
 éu_K = éu_K
 éu_K~ = éu_K~
 loop.sh = loop.sh
 montage = montage
 mp32wav = mp32wav
 newxfce4 = newxfce4
 pac-drive.sh = pac-drive.sh
 para-awk = para-awk
 parametre = parametre
 profile = profile
 prog.sh = prog.sh
 renom = renom
 renom_file = renom_file
 titre.tcl = titre.tcl
 to-mp3 = to-mp3
 upper2low = upper2low
 user = user
Cela ne fonctionne toujours pas.Je n'ai mis que les lettres que j'était sûr de trouver.
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Avatar de l’utilisateur
karhu
Maître du Kyudo
Messages : 1199
Inscription : lun. 27 sept. 2010, 14:32
Localisation : Ile de France

Re: [bash]Suppression des accents dans les noms de fichier

Message par karhu »

Avec

Code : Tout sélectionner

#!/bin/bash
for f in *
do
  for ((i=0;i<${#f};i++)); do echo -n "${f:$i:1} "; done; echo
  f_new=${f//[^a-zA-Z0-9_-\ \.]/}
  echo "$f = $f_new"
done
echo -e "";
Juste le résultat des fichiers en question

Code : Tout sélectionner

Ç y i L È à 
ÇyiLÈà = ÇyiLÈà
ê - g œ 
ê-gœ = êgœ
e s s a i . t c l 
essai.tcl = essai.tcl
é u _ K 
éu_K = éuK
é u _ K ~ 
éu_K~ = éuK
Par contre pour les caractères spéciaux, seulement, j'ai bien deux octets dont le premier a pour valeur "C3".
Peut-être une piste
Dernière modification par tuxce le mer. 04 janv. 2012, 11:00, modifié 1 fois.
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [bash]Suppression des accents dans les noms de fichier

Message par tuxce »

Bon, on en apprend tous les jours, moi, ça me donne:

Code : Tout sélectionner

C ̧ y i L E ̀ a ̀ 
ÇyiLÈà = CyiLEa
Avatar de l’utilisateur
karhu
Maître du Kyudo
Messages : 1199
Inscription : lun. 27 sept. 2010, 14:32
Localisation : Ile de France

Re: [bash]Suppression des accents dans les noms de fichier

Message par karhu »

Demain je vais tester sur ma vieille Ubuntu, pour voir.
J'essaierai sur mon portable qui est lui aussi sous Archlinux, qui sait ?
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [bash]Suppression des accents dans les noms de fichier

Message par FoolEcho »

karhu a écrit :Autre chose ne fonctionnant pas non plus.

Code : Tout sélectionner

tr '[àâäéèêëôöîïùûü]' '[aaaeeeeiioouuu]'
et
sed 'y/àâçéèêëôöùüÂÀÇÉÈÊËÎÏÔÖÙÜ/aaceeeeiioouuAACEEEEIIOOUU/'
Je sais que cela fonctionne en tcl (csh, tcsh ?), en php et je crois en java.
Une idée ? Ou un autre moyen (léger) de faire cette translation ?
Effectivement le tr ne va pas, je ne connais pas trop sa syntaxe (ça m'étonne un peu, mais en parcourant vite fait le web, certaines versions ne supporteraient pas l'utf8)...
Par contre, le sed devrait fonctionner avec autant de caractères de part et d'autre (il te manque deux caractères à gauche). sed 'y/[àâçéèêëîïôöùüÂÀÇÉÈÊËÎÏÔÖÙÜ]/[aaceeeeiioouuAACEEEEIIOOUU]/

Code : Tout sélectionner

$ echo "C'est déjà ça"|sed 'y/[àâçéèêëîïôöùüÂÀÇÉÈÊËÎÏÔÖÙÜ]/[aaceeeeiioouuAACEEEEIIOOUU]/'        
C'est deja ca
... parce que ça me fait mal de te voir t'échiner sur des itérations caractère par caractère en bash (au passage, je ne connaissais pas le typeset, mais tu as cette syntaxe aussi: j=0;echo $((j+=10)) ). :mrgreen:
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17288
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [bash]Suppression des accents dans les noms de fichier

Message par benjarobin »

tuxce a écrit :@benjarobin: le souci, c'est que si "é" est reconnu comme "e'" (donc 2 caractères, c'est le cas chez moi, mais je saisis pas encore pourquoi par exemple chez toi, c'est pas le cas), la substitution ne fonctionne pas. (T'utilises quoi comme locale ?)
Hum c'est de l'utf8 donc é dont le code unicode est 0x00E9 est normalement composé de 0xC3 0xA9 soit "é"
@tuxce Sinon ta regexp est fausse car - doit toujours être à la fin sinon il considère ceci comme un "range"
Dernière modification par benjarobin le mer. 04 janv. 2012, 10:40, modifié 1 fois.
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
karhu
Maître du Kyudo
Messages : 1199
Inscription : lun. 27 sept. 2010, 14:32
Localisation : Ile de France

Re: [bash]Suppression des accents dans les noms de fichier

Message par karhu »

foolecho a écrit : (il te manque deux caractères à gauche)
Oui dans mon poste, mais pas dans tous les tests. Tentative de faire réagir sed qui m'annonçait une erreur sur une colonne, en supprimant une lettre je voulais voir si l'erreur suivait.
Je viens de refaire les tests sur le même PC avec une autre distribution (Ubuntu hardy) et sur un autre PC avec Archlinux : les résultats sont identiques !
foolecho a écrit : echo "C'est déjà ça"|sed 'y/[àâçéèêëîïôöùüÂÀÇÉÈÊËÎÏÔÖÙÜ]/[aaceeeeiioouuAACEEEEIIOOUU]/'
fonctionne aussi chez moi en ligne de commande (je viens de le vérifier) mais pas lorsqu'il est intégré au script. D'où cette superbe itération qui donne du charme et du sérieux. :P
Je vais continuer à chercher dans ce sens (sed), quitte à créer une fonction applicable fichier par fichier et non par répertoire.
benjarobin a écrit : Hum c'est de l'utf8 donc é dont le code unicode est 0x00E9 est normalement composé de 0xC3 0xA9 soit "é"
exact.
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17288
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [bash]Suppression des accents dans les noms de fichier

Message par benjarobin »

Tu utilise bien bash et non autre chose pour ton script ?
Comment lance tu ton script ? Je maintient que tu as définitivement des problèmes de configuration
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
karhu
Maître du Kyudo
Messages : 1199
Inscription : lun. 27 sept. 2010, 14:32
Localisation : Ile de France

Re: [bash]Suppression des accents dans les noms de fichier

Message par karhu »

Oui et non pour la configuration, le même problème sur deux PC et sur deux distributions, ou alors cela viendrait de ma "procédure d'installation".
En ligne de commande c'est bon

Code : Tout sélectionner

 echo "C'est déjà ça"|sed 'y/[àâçéèêëîïôöùüÂÀÇÉÈÊËÎÏÔÖÙÜ]/[aaceeeeiioouuAACEEEEIIOOUU]/'
C'est deja ca
ma version bash :

Code : Tout sélectionner

bash -version
GNU bash, version 4.2.20(2)-release (x86_64-unknown-linux-gnu)
Copyright (C) 2011 Free Software Foundation, Inc.
Licence GPLv3+ : GNU GPL version 3 ou ultérieure <http://gnu.org/licenses/gpl.html>
J'envoie mon script dans le répertoire à vérifier par la commande : ./<script>
Dans un script ce n'est pas bon

Code : Tout sélectionner

#!/bin/bash

echo -e "";
for f in *			# les fichiers du répertoire
do
  nom=`echo ${f} | sed 'y/[àâçéèêëîïôöùüÂÀÇÉÈÊËÎÏÔÖÙÜ]/[aaceeeeiioouuAACEEEEIIOOUU]/'`;
  echo -e " $f = $nom";		# pour tester avant le "mv"
  nom=`exec echo ${f} | sed 'y/[àâçéèêëîïôöùüÂÀÇÉÈÊËÎÏÔÖÙÜ]/[aaceeeeiioouuAACEEEEIIOOUU]/'`;
  echo -e " $f = $nom";		# pour tester avant le "mv"
done
echo -e "";
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17288
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [bash]Suppression des accents dans les noms de fichier

Message par benjarobin »

A mais ce n'est absolument pas le même code, si tu met juste

Code : Tout sélectionner

#!/bin/bash
echo "C'est déjà ça"|sed 'y/[àâçéèêëîïôöùüÂÀÇÉÈÊËÎÏÔÖÙÜ]/[aaceeeeiioouuAACEEEEIIOOUU]/'
Moi je dis que l'on s’embête un peu trop avec bash, un bon programme en C et on comprendra au moins ce qui se passe
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [bash]Suppression des accents dans les noms de fichier

Message par FoolEcho »

Fonctionne chez moi avec:

Code : Tout sélectionner

#!/bin/bash

echo -e "";
#for f in  ~/Musique/Georges\ Brassens/Les\ copains\ d\'abord\ \(CD\ 1\)/*       # les fichiers du répertoire
for f in  *
do
  nom=`echo ${f} | sed 'y/[àâçéèêëîïôöùüÂÀÇÉÈÊËÎÏÔÖÙÜ]/[aaceeeeiioouuAACEEEEIIOOUU]/'`;
  echo -e " $f = $nom";      # pour tester avant le "mv"
done
echo -e "";

Code : Tout sélectionner

$ ./change.sh                                                                            

 /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/01 - Le gorille.flac = /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/01 - Le gorille.flac
 /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/02 - Les amoureux des bancs publics.flac = /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/02 - Les amoureux des bancs publics.flac
 /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/03 - Les sabots d'Hélène.flac = /home/dummy/Georges Brassens/Les copains d'abord (CD 1)/03 - Les sabots d'Helene.flac
 /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/04 - Chanson pour l'Auvergnat.flac = /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/04 - Chanson pour l'Auvergnat.flac
 /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/05 - La chasse aux papillons.flac = /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/05 - La chasse aux papillons.flac
 /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/06 - Auprès de mon arbre.flac = /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/06 - Aupres de mon arbre.flac
 /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/07 - Le pornographe.flac = /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/07 - Le pornographe.flac
 /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/08 - Dans l'eau de la claire fontaine.flac = /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/08 - Dans l'eau de la claire fontaine.flac
 /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/09 - Les trompettes de la renommée.flac = /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/09 - Les trompettes de la renommee.flac
 /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/10 - Les deux oncles.flac = /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/10 - Les deux oncles.flac
 /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/11 - Les copains d'abord.flac = /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/11 - Les copains d'abord.flac
 /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/12 - Supplique pour être enterré à la plage de Sète.flac = /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/12 - Supplique pour etre enterre a la plage de Sete.flac
 /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/13 - La non-demande en mariage.flac = /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/13 - La non-demande en mariage.flac
 /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/14 - Rien à jeter.flac = /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/14 - Rien a jeter.flac
 /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/15 - Heureux qui comme Ulysse.flac = /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/15 - Heureux qui comme Ulysse.flac
 /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/16 - Mourir pour des idées.flac = /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/16 - Mourir pour des idees.flac
 /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/17 - Tempête dans un bénitier.flac = /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/17 - Tempete dans un benitier.flac
 /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/18 - Cupidon s'en fout.flac = /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/18 - Cupidon s'en fout.flac
 /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/19 - Élégie à un rat de cave.flac = /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/19 - Elegie a un rat de cave.flac
 /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/change.sh = /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/change.sh
 /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/Lescopainsd'abord.png = /home/dummy/Musique/Georges Brassens/Les copains d'abord (CD 1)/Lescopainsd'abord.png
Après, on peut faire le script à coup de find/exec pour renommer à la volée...

Mais je rejoins benjarobin, tout ça n'est que du contournement: personne n'a compris quel était vraiment ton problème, c'est-à-dire comment tu arrives à des fichiers dont l'encodage est différent. C'est ça qu'il faut règler. :|
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
karhu
Maître du Kyudo
Messages : 1199
Inscription : lun. 27 sept. 2010, 14:32
Localisation : Ile de France

Re: [bash]Suppression des accents dans les noms de fichier

Message par karhu »

Alors voilà le problème :

Code : Tout sélectionner

#!/bin/bash

echo -e "";
for f in *			# les fichiers du répertoire
do
  nom=`echo ${f} | sed 'y/[àâçéèêëîïôöùüÂÀÇÉÈÊËÎÏÔÖÙÜ]/[aaceeeeiioouuAACEEEEIIOOUU]/'`;
  echo -e " $f = $nom";		# pour tester avant le "mv"
done
echo -e "";
echo "C'est déjà ça"|sed 'y/[àâçéèêëîïôöùüÂÀÇÉÈÊËÎÏÔÖÙÜ]/[aaceeeeiioouuAACEEEEIIOOUU]/';
echo -e "";
Résultat (significatif)

Code : Tout sélectionner

 ÇyiLÈà = ÇyiLÈà
 direct = direct
 ê-gœ = ê-gœ
 essai.tcl = essai.tcl
 éu_K = éu_K

C'est deja ca

Il semble bien que ce soit bash qui ait du mal en interne avec UTF8 !
Pour le petit programme en "C", pourquoi pas, mais il n'est pas très doué pour le maniement des chaînes de caractères, il va falloir écrire quelques fonctions spécifiques, quoi ré-inventer !
Quitte à être lourd, pourquoi pas utiliser du PHP ? :pastaper:
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
farvardin
Maître du Kyudo
Messages : 1084
Inscription : sam. 29 mars 2008, 22:56

Re: [bash]Suppression des accents dans les noms de fichier

Message par farvardin »

c'est bien de savoir comment faire ça en bash, mais il y a également le programme detox qui est adapté pour résoudre ce genre de problème :

http://detox.sourceforge.net/
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17288
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [bash]Suppression des accents dans les noms de fichier

Message par benjarobin »

Code : Tout sélectionner

#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
     
int main (void)
{
	DIR *dp;
	struct dirent *ep;
	char *ptName;
	
	dp = opendir ("./");
	if (dp != NULL)
	{
		while ((ep = readdir (dp)))
		{
			printf("===> %s\n", ep->d_name);
			for(ptName = ep->d_name; *ptName != 0; ptName++)
			{
				printf("0x%X '%c'\n", (char)*ptName, *ptName);
			}
		}
		closedir (dp);
	}
	else {
		perror ("Couldn't open the directory");
	}
	
	return 0;
}
Enregistre ce fichier par exemple sous listeFile.c, puis compile le, place le dans le dossier à lister et exécute le :

Code : Tout sélectionner

gcc listeFile.c -o listeFile
cp listeFile /le/dossier/a/lister/contenant/des/accents/
/le/dossier/a/lister/contenant/des/accents/listeFile
Si on ne comprend pas ce qui se passe avec ceci, j'abandonne :D
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10707
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [bash]Suppression des accents dans les noms de fichier

Message par FoolEcho »

J'insiste aussi... :mrgreen:
karhu a écrit :Résultat (significatif)

Code : Tout sélectionner

ÇyiLÈà = ÇyiLÈà
direct = direct
ê-gœ = ê-gœ
essai.tcl = essai.tcl
éu_K = éu_K

C'est deja ca
Il semble bien que ce soit bash qui ait du mal en interne avec UTF8 !
C'est ton bash ou l'encodage de ta console qui a un problème, même script que toi:

Code : Tout sélectionner

$ touch ÇyiLÈà direct ê-gœ essai.tcl éu_K
$ ./change.sh                                                                                    

 change.sh = change.sh
 change.sh~ = change.sh~
 ÇyiLÈà = CyiLEa
 direct = direct
 ê-gœ = e-gœ
 essai.tcl = essai.tcl
 éu_K = eu_K
(je suis en utf8 et konsole aussi, ça va de soi)
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
karhu
Maître du Kyudo
Messages : 1199
Inscription : lun. 27 sept. 2010, 14:32
Localisation : Ile de France

Re: [bash]Suppression des accents dans les noms de fichier

Message par karhu »

J'ai de plus en plus de mal à comprendre !
Dans mon .bashrc j'ai créé une fonction de changement

Code : Tout sélectionner

change () {
  cp $1 `echo $1 | sed 'y/[àâçéèêëîïôöùüÂÀÇÉÈÊËÎÏÔÖÙÜ]/[aaceeeeiioouuAACEEEEIIOOUU]/'`;
}
après un source .bashrc

Code : Tout sélectionner

change éu_K
ls -A
-rw-r--r-- 1 iohan users    0  3 janv. 15:37 ÇyiLÈà
-rwxr--r-- 1 iohan users 1091  4 janv. 11:51 direct
-rw-r--r-- 1 iohan users  305  3 janv. 23:51 dir.txt
-rw-r--r-- 1 iohan users  277  4 janv. 11:43 ê-gœ
-rwxr-xr-x 1 iohan users  196  7 mars   2006 essai.tcl
-rw-r--r-- 1 iohan users  277  4 janv. 12:06 eu_K
-rw-r--r-- 1 iohan users  277  4 janv. 11:43 éu_K
Edit: tester avec terminal encodage UTF-8 (?)
avec xterm encodage UTF-8
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Avatar de l’utilisateur
mimas
Elfe
Messages : 559
Inscription : sam. 30 sept. 2006, 22:30
Localisation : Toulouse

Re: [bash]Suppression des accents dans les noms de fichier

Message par mimas »

> J'ai de plus en plus de mal à comprendre !

Revenons sur ton assertion

> Le Français est une belle langue, mais pas toujours adaptée à l'informatique ou tout du moins l'informatique ne fait pas d'effort pour s'adapter au français.

Il est facile de démontrer qu'elle est fausse, quelques millions de russes, arabophones, japonais… pourront facilement aller dans mon sens. Donc si ce n'est pas l'informatique qui ne pose pas le problème, alors qu'est-ce ?

Pour résoudre ce problème d'encodage, tu vas utiliser bash et un jeu de programmes primitifs, qualité qui ne les rends pas pour autant inutiles ou impuissants. Puis là tu te rends compte qu'en fait tu comprends de moins en moins le problème.

Je suis tenté de répondre : « S'il n'y a pas de solution, c'est qu'il n'y a pas de problème. ». Mais je vais répondre que si tu rencontres un problème en utilisant des outils, et que tu n'arrives pas à le résoudre avec ces outils, alors c'est peut-être que les outils ne sont pas les bons.
Anarchy for the triple A.
Avatar de l’utilisateur
karhu
Maître du Kyudo
Messages : 1199
Inscription : lun. 27 sept. 2010, 14:32
Localisation : Ile de France

Re: [bash]Suppression des accents dans les noms de fichier

Message par karhu »

Absolument d'accord.
Ma difficulé à comprendre le problème vient du fait que si j'utilise la commande en ligne ou sous forme de fonction définie dans mon .bashrc elle fonctionne. Seulement si je l'utilise à l'interieur d'un script elle ne fonctionne plus.
Il me semble que pourtant dans les trois cas c'est au final l'interpréteur "bash" qui fait le travail.
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17288
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [bash]Suppression des accents dans les noms de fichier

Message par benjarobin »

J'ai ma théorie et j'avais posé une question dans ce sens mais tu n'as pas répondu.
Je parie que l'encodage du script et du bashrc n'est pas le même. Et je mise que c'est gedit le problème.
Donc comme spécifié précédemment as tu tenté d'écrire le script avec nano ?
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
karhu
Maître du Kyudo
Messages : 1199
Inscription : lun. 27 sept. 2010, 14:32
Localisation : Ile de France

Re: [bash]Suppression des accents dans les noms de fichier

Message par karhu »

Merci @Benjarobin.
Le problème venait bien de gedit je pense.
Le script suivant, écrit avec vim, fonctionne.

Code : Tout sélectionner

#!/bin/bash
echo -e "";
for f in *
do
  nom=`echo ${f} | sed 'y/àâéèêëîïôöùûüçÀÂÉÈÊËÎÏÔÖÙÛÜÇ/aaeeeeiioouuucAAEEEEIIOOUUUC/'`;
  echo -e " $f = $nom";
done
echo -e "";
Du coup je vais virer gedit et le remplacer par l'interface graphique de vim, en espérant que cela continue à fonctionner.
C'est quand même marrant de toujours vouloir chercher le plus compliqué !
@mimas tu avais raison, j'utilisais un mauvais outil. Je vérifierai mieux la prochaine (résolution de début d'anné). :wink:
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Répondre