Bonjour,
j'ai installé un nouveau serveur Linux avec la mandrake 10, suite à cette installation, j'ai
transféré les données qui se trouvaient sur un autre serveur (Mandrake 7.0) vers ce nouveau serveur.
Lors de ce transfert, tous les fichiers dont le nom comportait un caractère accentué ont vu leur nom
modifié et les caractères accentués remplacés par des "?".
De plus lorsque je modifie le nom de ces fichiers, sous windows (via samba) j'ai bien mon caractère
accentué mais sous linux les caractères accentués sont remplacés par des codes.
Par rapport à ça j'ai 2 questions :
La première : comment faire pour que cela ne se reproduise plus.
La seconde : quelqu'un a t'il une idée de script pour remplacer dans une arborescence tous les
points d'interrogation par les bons caractères (voir un e tout bête pour l'instant) dans les noms de
fichier ??
merci
--
Pascal Legrand
*IUT de Chartres* - _Service Informatique_
1 place Pierre Mendès France - 28000 Chartres
Tel: 02 37 91 83 36 - Fax: 02 37 91 83 01
Pascal.Legrand@univ-orleans.fr
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
chmod 777
Pascal Legrand wrote:
Bonjour, Bonjour,
La seconde : quelqu'un a t'il une idée de script pour remplacer dans une arborescence tous les points d'interrogation par les bons caractères (voir un e tout bête pour l'instant) dans les noms de fichier ??
J'ai fait ce petit truc: tu lui donnes le nom de dossier à traiter en argument et il remplace tous les caractères accentués dans les noms de fichiers... Il peut être amélioré pour virer les espaces et autres caractères "loufoques". Il est loin d'être académique, mais pourtant, il tourne ;o)
#!/bin/sh compteur=0 if [ -d $1 ] ; then cd $1 for i in * ; do if [ -f "$i" ] ; then if mv "$i" `echo "$i" | sed y/àäâçéèëêïîöôù/aaaceeeeiioou/` 2> /dev/null ; then Ce "then" était sur la ligne précédente : $((compteur+=1)) fi fi done else echo "$1 n'est pas un repertoire" >&2 exit 1 fi echo "$compteur fichier(s) modifié(s)"
merci
En espérant t'avoir un peu aidé,
Lionel
-- Mon adresse EST valide: ne rien supprimer! J'espère être tranquille grâce à la méthode Paugam
Pascal Legrand wrote:
Bonjour,
Bonjour,
La seconde : quelqu'un a t'il
une idée de script pour remplacer dans une arborescence tous les points
d'interrogation par les bons caractères (voir un e tout bête pour
l'instant) dans les noms de fichier ??
J'ai fait ce petit truc: tu lui donnes le nom de dossier à traiter en
argument et il remplace tous les caractères accentués dans les noms de
fichiers... Il peut être amélioré pour virer les espaces et autres
caractères "loufoques". Il est loin d'être académique, mais pourtant, il
tourne ;o)
#!/bin/sh
compteur=0
if [ -d $1 ] ; then
cd $1
for i in * ; do
if [ -f "$i" ] ; then
if mv "$i" `echo "$i" | sed y/àäâçéèëêïîöôù/aaaceeeeiioou/` 2> /dev/null ;
then Ce "then" était sur la ligne précédente
: $((compteur+=1))
fi
fi
done
else
echo "$1 n'est pas un repertoire" >&2
exit 1
fi
echo "$compteur fichier(s) modifié(s)"
merci
En espérant t'avoir un peu aidé,
Lionel
--
Mon adresse EST valide: ne rien supprimer!
J'espère être tranquille grâce à la méthode Paugam
La seconde : quelqu'un a t'il une idée de script pour remplacer dans une arborescence tous les points d'interrogation par les bons caractères (voir un e tout bête pour l'instant) dans les noms de fichier ??
J'ai fait ce petit truc: tu lui donnes le nom de dossier à traiter en argument et il remplace tous les caractères accentués dans les noms de fichiers... Il peut être amélioré pour virer les espaces et autres caractères "loufoques". Il est loin d'être académique, mais pourtant, il tourne ;o)
#!/bin/sh compteur=0 if [ -d $1 ] ; then cd $1 for i in * ; do if [ -f "$i" ] ; then if mv "$i" `echo "$i" | sed y/àäâçéèëêïîöôù/aaaceeeeiioou/` 2> /dev/null ; then Ce "then" était sur la ligne précédente : $((compteur+=1)) fi fi done else echo "$1 n'est pas un repertoire" >&2 exit 1 fi echo "$compteur fichier(s) modifié(s)"
merci
En espérant t'avoir un peu aidé,
Lionel
-- Mon adresse EST valide: ne rien supprimer! J'espère être tranquille grâce à la méthode Paugam
Nicolas George
Rakotomandimby Mihamina wrote in message <ccgjja$afp$:
A mon avis Pascal devrait trouver une solution pour Afficher correctement les accents, et non pour renommer les fichiers de telle sorte.
Tu as en partie raison. En l'occurence, je soupçonne que les noms de fichiers sont encodés en ISO-8859-1, alors que la nouvelle version de la distribution considère tout par défaut en UTF-8. Or ça, c'est une très bonne chose.
La compatibilité avec l'ancien, c'est bien gentil, mais de temps en temps il faut savoir l'abandonner pour avancer. Et quant aux backups, de toutes façons, de temps en temps il faut faire des backups complets, quand même.
Si c'est bien un problème d'encodage, ISO-8859-1 devenu UTF-8, il est relativement facile de convertir les noms de fichiers.
Rakotomandimby Mihamina wrote in message
<ccgjja$afp$1@news-reader3.wanadoo.fr>:
A mon avis Pascal devrait trouver une solution pour Afficher
correctement les accents, et non pour renommer les fichiers de telle sorte.
Tu as en partie raison. En l'occurence, je soupçonne que les noms de
fichiers sont encodés en ISO-8859-1, alors que la nouvelle version de la
distribution considère tout par défaut en UTF-8. Or ça, c'est une très
bonne chose.
La compatibilité avec l'ancien, c'est bien gentil, mais de temps en
temps il faut savoir l'abandonner pour avancer. Et quant aux backups, de
toutes façons, de temps en temps il faut faire des backups complets,
quand même.
Si c'est bien un problème d'encodage, ISO-8859-1 devenu UTF-8, il est
relativement facile de convertir les noms de fichiers.
Rakotomandimby Mihamina wrote in message <ccgjja$afp$:
A mon avis Pascal devrait trouver une solution pour Afficher correctement les accents, et non pour renommer les fichiers de telle sorte.
Tu as en partie raison. En l'occurence, je soupçonne que les noms de fichiers sont encodés en ISO-8859-1, alors que la nouvelle version de la distribution considère tout par défaut en UTF-8. Or ça, c'est une très bonne chose.
La compatibilité avec l'ancien, c'est bien gentil, mais de temps en temps il faut savoir l'abandonner pour avancer. Et quant aux backups, de toutes façons, de temps en temps il faut faire des backups complets, quand même.
Si c'est bien un problème d'encodage, ISO-8859-1 devenu UTF-8, il est relativement facile de convertir les noms de fichiers.
Rakotomandimby Mihamina
Bonjour, ... Et supposons maintenant que ce sont des données a sauvegarder regulierement et si la sauvegarde est incrementale, comme on a renommé tous les fichiers on va tout backuper ce qu'on a renommé (vive la taille du backup)...
A mon avis Pascal devrait trouver une solution pour Afficher correctement les accents, et non pour renommer les fichiers de telle sorte.
cela dit, si chmod777 confirme que son script marche tres bien je voudrai avoir plus de precisions sur son fonctionnement parceque le renommage en masse est un sujet qui est interessant ... (en PV si possible) -- Rakotomandimby Mihamina Andrianifaharana Tel : +33 2 38 76 43 65 http://www.rktmb.org/Members/mihamina
Bonjour,
... Et supposons maintenant que ce sont des données a sauvegarder
regulierement et si la sauvegarde est incrementale, comme on a renommé
tous les fichiers on va tout backuper ce qu'on a renommé (vive la taille
du backup)...
A mon avis Pascal devrait trouver une solution pour Afficher
correctement les accents, et non pour renommer les fichiers de telle sorte.
cela dit, si chmod777 confirme que son script marche tres bien je
voudrai avoir plus de precisions sur son fonctionnement parceque le
renommage en masse est un sujet qui est interessant ... (en PV si possible)
--
Rakotomandimby Mihamina Andrianifaharana
Tel : +33 2 38 76 43 65
http://www.rktmb.org/Members/mihamina
Bonjour, ... Et supposons maintenant que ce sont des données a sauvegarder regulierement et si la sauvegarde est incrementale, comme on a renommé tous les fichiers on va tout backuper ce qu'on a renommé (vive la taille du backup)...
A mon avis Pascal devrait trouver une solution pour Afficher correctement les accents, et non pour renommer les fichiers de telle sorte.
cela dit, si chmod777 confirme que son script marche tres bien je voudrai avoir plus de precisions sur son fonctionnement parceque le renommage en masse est un sujet qui est interessant ... (en PV si possible) -- Rakotomandimby Mihamina Andrianifaharana Tel : +33 2 38 76 43 65 http://www.rktmb.org/Members/mihamina
Pascal Legrand
-------- Message original --------
Rakotomandimby Mihamina wrote in message <ccgjja$afp$:
A mon avis Pascal devrait trouver une solution pour Afficher correctement les accents, et non pour renommer les fichiers de telle sorte.
Tu as en partie raison. En l'occurence, je soupçonne que les noms de fichiers sont encodés en ISO-8859-1, alors que la nouvelle version de la distribution considère tout par défaut en UTF-8. Or ça, c'est une très bonne chose.
La compatibilité avec l'ancien, c'est bien gentil, mais de temps en temps il faut savoir l'abandonner pour avancer. Et quant aux backups, de toutes façons, de temps en temps il faut faire des backups complets, quand même.
Si c'est bien un problème d'encodage, ISO-8859-1 devenu UTF-8, il est relativement facile de convertir les noms de fichiers. Merci pour votre réponse.
Mais en fait je ne sais pas comment faire pour vérifier le type d'encodage, et ensuite comment convertir les noms de fichiers merci encore
-- Pascal Legrand *IUT de Chartres* - _Service Informatique_ 1 place Pierre Mendès France - 28000 Chartres Tel: 02 37 91 83 36 - Fax: 02 37 91 83 01
-------- Message original --------
Rakotomandimby Mihamina wrote in message
<ccgjja$afp$1@news-reader3.wanadoo.fr>:
A mon avis Pascal devrait trouver une solution pour Afficher
correctement les accents, et non pour renommer les fichiers de telle sorte.
Tu as en partie raison. En l'occurence, je soupçonne que les noms de
fichiers sont encodés en ISO-8859-1, alors que la nouvelle version de la
distribution considère tout par défaut en UTF-8. Or ça, c'est une très
bonne chose.
La compatibilité avec l'ancien, c'est bien gentil, mais de temps en
temps il faut savoir l'abandonner pour avancer. Et quant aux backups, de
toutes façons, de temps en temps il faut faire des backups complets,
quand même.
Si c'est bien un problème d'encodage, ISO-8859-1 devenu UTF-8, il est
relativement facile de convertir les noms de fichiers.
Merci pour votre réponse.
Mais en fait je ne sais pas comment faire pour vérifier le type d'encodage, et ensuite comment
convertir les noms de fichiers merci encore
--
Pascal Legrand
*IUT de Chartres* - _Service Informatique_
1 place Pierre Mendès France - 28000 Chartres
Tel: 02 37 91 83 36 - Fax: 02 37 91 83 01
Pascal.Legrand@univ-orleans.fr
Rakotomandimby Mihamina wrote in message <ccgjja$afp$:
A mon avis Pascal devrait trouver une solution pour Afficher correctement les accents, et non pour renommer les fichiers de telle sorte.
Tu as en partie raison. En l'occurence, je soupçonne que les noms de fichiers sont encodés en ISO-8859-1, alors que la nouvelle version de la distribution considère tout par défaut en UTF-8. Or ça, c'est une très bonne chose.
La compatibilité avec l'ancien, c'est bien gentil, mais de temps en temps il faut savoir l'abandonner pour avancer. Et quant aux backups, de toutes façons, de temps en temps il faut faire des backups complets, quand même.
Si c'est bien un problème d'encodage, ISO-8859-1 devenu UTF-8, il est relativement facile de convertir les noms de fichiers. Merci pour votre réponse.
Mais en fait je ne sais pas comment faire pour vérifier le type d'encodage, et ensuite comment convertir les noms de fichiers merci encore
-- Pascal Legrand *IUT de Chartres* - _Service Informatique_ 1 place Pierre Mendès France - 28000 Chartres Tel: 02 37 91 83 36 - Fax: 02 37 91 83 01
Nicolas George
Pascal Legrand wrote in message <40ebe6fb$0$18099$:
Mais en fait je ne sais pas comment faire pour vérifier le type d'encodage,
Une solution, en ligne de commande, est de taper :
Si é est codé par e9, à par e0, etc. (cf. la page de man iso-8859-1 pour la liste complète), c'est bien de l'ISO-8859-1. En revanche, si é est codé par deux octets, c3 a9, alors c'est déjà de l'UTF-8. Et si c'est autre chose, il faut voir.
et ensuite comment convertir les noms de fichiers merci encore
Ce n'est pas évident. Le plus fiable serait probablement de faire faire ça par un script perl, quelque chose comme :
#!/usr/bin/env perl
use strict; use warnings;
for my $f (@ARGV) { if($f =~ /[^x20-x7exa0-xff]/) { warn "$f: invalid iso-8859-1n"; next; } my $n = pack("C*", unpack("C*", pack("U*", unpack("C*", $f)))); if($n ne $f) { rename $f, $n or warn "$f: $!n"; } }
C'est un peu beurk, en particulier les quatre pack emboîtés, mais le comportement des chaînes en Unicode dans les appels système est assez mal documenté... En tout cas ça a l'air de marcher.
Pascal Legrand wrote in message
<40ebe6fb$0$18099$626a14ce@news.free.fr>:
Mais en fait je ne sais pas comment faire pour vérifier le type
d'encodage,
Une solution, en ligne de commande, est de taper :
Si é est codé par e9, à par e0, etc. (cf. la page de man iso-8859-1 pour
la liste complète), c'est bien de l'ISO-8859-1. En revanche, si é est
codé par deux octets, c3 a9, alors c'est déjà de l'UTF-8. Et si c'est
autre chose, il faut voir.
et ensuite comment convertir les noms de fichiers merci
encore
Ce n'est pas évident. Le plus fiable serait probablement de faire faire
ça par un script perl, quelque chose comme :
#!/usr/bin/env perl
use strict;
use warnings;
for my $f (@ARGV) {
if($f =~ /[^x20-x7exa0-xff]/) {
warn "$f: invalid iso-8859-1n";
next;
}
my $n = pack("C*", unpack("C*", pack("U*", unpack("C*", $f))));
if($n ne $f) {
rename $f, $n or warn "$f: $!n";
}
}
C'est un peu beurk, en particulier les quatre pack emboîtés, mais le
comportement des chaînes en Unicode dans les appels système est assez
mal documenté... En tout cas ça a l'air de marcher.
Si é est codé par e9, à par e0, etc. (cf. la page de man iso-8859-1 pour la liste complète), c'est bien de l'ISO-8859-1. En revanche, si é est codé par deux octets, c3 a9, alors c'est déjà de l'UTF-8. Et si c'est autre chose, il faut voir.
et ensuite comment convertir les noms de fichiers merci encore
Ce n'est pas évident. Le plus fiable serait probablement de faire faire ça par un script perl, quelque chose comme :
#!/usr/bin/env perl
use strict; use warnings;
for my $f (@ARGV) { if($f =~ /[^x20-x7exa0-xff]/) { warn "$f: invalid iso-8859-1n"; next; } my $n = pack("C*", unpack("C*", pack("U*", unpack("C*", $f)))); if($n ne $f) { rename $f, $n or warn "$f: $!n"; } }
C'est un peu beurk, en particulier les quatre pack emboîtés, mais le comportement des chaînes en Unicode dans les appels système est assez mal documenté... En tout cas ça a l'air de marcher.
X.B
essaye de trouver un programme qui s'appelle convmv (il existe un rpm suse) http://j3e.de/linux/convmv/
convmv is meant to help convert a directory tree and the contained files or a whole filesystem into a different encoding. It just converts the filenames, not the content of the files. A special feature of convmv is that it also takes care of symlinks, also converts the symlink target pointer in case the symlink target is being converted, too.
All this comes in very handy when one wants to switch over from old 8bit locales to UTF-8 locales. It is also possible to convert directories to UTF-8 which are already partly UTF-8 encoded. convmv is able to detect if certain files are UTF-8 encoded and will skip them by default. To turn this smartness off use the --nosmart switch.
An interoperability issue that comes with UTF-8 locales is this: Linux and (most?) other Unix-like operating systems use the so called normalization form C (NFC) for its UTF-8 encoding by default but do not enforce this. Darwin, the base of the Macintosh OS enforces normalization form D (NFD), where a few characters are encoded in a different way. convmv is able to convert files to NFC or NFD which makes interoperability to such systems a lot easier.
essaye de trouver un programme qui s'appelle convmv (il existe un rpm suse)
http://j3e.de/linux/convmv/
convmv is meant to help convert a directory tree and the contained
files or a whole filesystem into a different encoding. It just converts
the filenames, not the content of the files. A special feature of
convmv is that it also takes care of symlinks, also converts the
symlink target pointer in case the symlink target is being converted,
too.
All this comes in very handy when one wants to switch over from old
8bit locales to UTF-8 locales. It is also possible to convert
directories to UTF-8 which are already partly UTF-8 encoded. convmv is
able to detect if certain files are UTF-8 encoded and will skip them by
default. To turn this smartness off use the --nosmart switch.
An interoperability issue that comes with UTF-8 locales is this: Linux
and (most?) other Unix-like operating systems use the so called
normalization form C (NFC) for its UTF-8 encoding by default but do not
enforce this. Darwin, the base of the Macintosh OS enforces
normalization form D (NFD), where a few characters are encoded in a
different way. convmv is able to convert files to NFC or NFD which
makes interoperability to such systems a lot easier.
essaye de trouver un programme qui s'appelle convmv (il existe un rpm suse) http://j3e.de/linux/convmv/
convmv is meant to help convert a directory tree and the contained files or a whole filesystem into a different encoding. It just converts the filenames, not the content of the files. A special feature of convmv is that it also takes care of symlinks, also converts the symlink target pointer in case the symlink target is being converted, too.
All this comes in very handy when one wants to switch over from old 8bit locales to UTF-8 locales. It is also possible to convert directories to UTF-8 which are already partly UTF-8 encoded. convmv is able to detect if certain files are UTF-8 encoded and will skip them by default. To turn this smartness off use the --nosmart switch.
An interoperability issue that comes with UTF-8 locales is this: Linux and (most?) other Unix-like operating systems use the so called normalization form C (NFC) for its UTF-8 encoding by default but do not enforce this. Darwin, the base of the Macintosh OS enforces normalization form D (NFD), where a few characters are encoded in a different way. convmv is able to convert files to NFC or NFD which makes interoperability to such systems a lot easier.