bash et utf-8

Le
Nicolas Michel
Bonjour à tous

Ça fait un bail que j'ai plus de serveur usenet,
donc désolé mais je poste depuis groups.google
(oui, c'est mal, méaculpa)

Bref, j'ai une petite difficulté qui me prends bien la tête,
plutôt que de harceler patpro sur sa ML jusqu'à ce qu'il me haïsse,=

je me dis qu'il y a peut-être un des barbus du coin qui sait y faire :)

Voilà en résumé le problème :

$ touch français
$ find . -name "*ç*"

La commande find ne trouve pas le fichier.

Le contexte :
Certains utilisateurs se plaignent de crash fréquent de word.
Dans 2 cas j'ai pu résoudre le problème en renommant le dossier parent =
:
Un coup il y avait un / dans le nom du dossier, l'autre un !

Bref, je cherche un moyen pour trouver tous les fichiers / dossiers dont le=
nom est exotique. Pour ce faire, j'ai tenté de faire un truc genre :

find $HOME -name "*[^[:alnum:]|.| |_|-|é|è|ê|ë]*" -print0 |xargs -=
0 ls -d1B > /tmp/To_Rename.txt

Donc les questions à présent :
1) avez-vous un petit outil qui ferait ça plus simplement ?
Notez bien que je ne cherche pas un truc qui trouve tous les fichiers conte=
nant un ! dans le nom, parce que il me faudrait alors passer en revue tous =
les caractères utf-8 possible et imaginable et que j'ai pas très envie =
de me mettre au chinois, au cyrillique et autre.

2) pourriez-vous m'expliquer ou me donner un lien qui explique "c'est quoi =
le problème des encodages" ?

3) connaissez vous un outil qui gère les regex unicode ?
<http://www.regular-expressions.info/unicode.html>

Merci !

Plouf

Nicolas Michel
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Paul Gaborit
Le #24821462
À (at) Fri, 28 Sep 2012 07:29:51 -0700 (PDT),
Nicolas Michel
Donc les questions à présent :
1) avez-vous un petit outil qui ferait ça plus simplement ?



Tout prêt ? Non.

2) pourriez-vous m'expliquer ou me donner un lien qui explique "c'est
quoi le problème des encodages" ?



Pour les noms de fichiers, HFS+ (et le Finder) utilise de l'UTF-16 avec
une normalisation NFD.

Vos commandes shell n'utilisent sans doute pas cet encodage et surtout
pas cette normalisation...

3) connaissez vous un outil qui gère les regex unicode ?



Perl, Python, Ruby...

--
Paul Gaborit -
Nicolas Michel
Le #24825342
Salut Paul

Le vendredi 28 septembre 2012 17:28:14 UTC+2, Paul Gaborit a écrit :

Pour les noms de fichiers, HFS+ (et le Finder) utilise de l'UTF-16 avec
une normalisation NFD.

Vos commandes shell n'utilisent sans doute pas cet encodage et surtout
pas cette normalisation...



OK, merci pour la réponse simple et claire.

Perl, Python, Ruby...



ok, je ne pratique pas trop mais c'est une très bonne occasion de m'y met tre
Merci !
Nicolas Michel
Le #24828552
Hello

Finalement j'ai bien fait de harceler Patpro :
il a trouvé une option dans grep, "-P", qui fait des regex perl.

C'est presque bon, il me manque encore des éléments, mais en gros
comme Paul le disais, hfs+ écrit en utf-16 décomposé,
donc chaque caractère accentué est composé de 3 unicode :
la lettre, une liaison puis l'accent.

Par exemple
ç = [x63][xcc][xa7]
è = "[x65][xcc][x81]"
à = "[a][xcc][x80]"
ê = "[e][xcc][x82]"
ï = "[i][xcc][x88]"

Ce qui donne un truc du genre (pas encore finit, il manque des accents)

find . |grep -P "[aeiou][xcc][x80-x88]"

où [aeiou] sont les voyelles, [xcc] est le unicode "cc" de liaison
et [x80-x82] les char de 80 à 82, c'est à dire accent aigu, grave, ci rconflexe, etc ...

On peut voir ce qui est écrit sur le disque avec la commande "od -h"

Voilà ...

Merci encore
Publicité
Poster une réponse
Anonyme