Expressions regulières //netoyage de fichiers SAMBA
7 réponses
Cédric LE BRIS
Bonjour, je cherche des connaisseurs shell:)
En fait je cherche =E0 faire une petite boucle qui passerais en =
r=E9cursif l'ensemble des fichiers
Pour les nettoyer de leur accents et de leus espaces....
Voil=E0 ce que j'ai sous la main pour le moment:
=20
Le probl=E8me c'est qu' j'aimerais passer un test =E0 chaque fichier =
pour voir si chaqe condition est respect=E9e...
sinon mais je suis pas sur : rename ' s/[=a=]/a/g; s/[=A=]/A/g; s/[=e=]/e/g; s/[=E=]/E/g; ... ' "$1"
Cordialement, -- Eric DÉCORNOD Ingénieur d'Études SCICS - Faculté des Sciences Université Henri Poincaré
Daniel Caillibaud
Cédric LE BRIS a écrit :
Bonjour, je cherche des connaisseurs shell:) En fait je cherche à faire une petite boucle qui passerais en récursif l'ensemble des fichiers Pour les nettoyer de leur accents et de leus espaces.... Voilà ce que j'ai sous la main pour le moment:
Le problème c'est qu' j'aimerais passer un test à chaque fichier pour voir si chaqe condition est respectée...
Pour cette dernière, je listerait plutôt tous les caractères acceptés et remplacerait le reste par _, du genre rename 's/[^a-zA-Z0-9-_ ]/_/g' "$1" puis virer éventuellement les _ doublés rename 's/__/_/g' "$1"
Mais tu vas avoir un pb, car seul la 1re modif va marcher, pour les suivantes, $1 aura changé...
Je te conseillerais plutôt d'utiliser sed pour tout faire en 1 fois, genre new=$(echo $1 | sed -e 's/[éèêë]/e/g; s/[ÈÉÊË]/E/g; ... ; s/[^a-zA-Z0-9-_ ]/_/g; s/__/_/g')
ou mieux avec new=$(echo "$1"|sed -e 'y/áàâäçéèêëíìîïñóòôöúùûü ÁÀÂÄÇÉÈÊËÍÌÎÏÑÓÒÔÖÚÙÛÜ/aaaaceeeeiiiinoooouuuu_aaaaceeeeiiiinoooouuuu/; s/[^a-zA-Z0-9-_ ]/_/g; s/__/_/g') # Attention, la ligne ci-dessus vire les majuscules et les espaces, je te laisse corriger if ( "$new" != "$1") then echo "Renommer '$1' en '$new' ?" read rep [ $rep == 'o' ] && mv "$1" "$new" && echo "renommage OK" fi
tr 'y/chars/chars/' marche aussi si tu n'es pas en utf8.
Daniel
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Cédric LE BRIS a écrit :
Bonjour, je cherche des connaisseurs shell:)
En fait je cherche à faire une petite boucle qui passerais en récursif l'ensemble des fichiers
Pour les nettoyer de leur accents et de leus espaces....
Voilà ce que j'ai sous la main pour le moment:
Le problème c'est qu' j'aimerais passer un test à chaque fichier pour voir si chaqe condition est respectée...
Pour cette dernière, je listerait plutôt tous les caractères acceptés et remplacerait le reste par _, du genre
rename 's/[^a-zA-Z0-9-_ ]/_/g' "$1"
puis virer éventuellement les _ doublés
rename 's/__/_/g' "$1"
Mais tu vas avoir un pb, car seul la 1re modif va marcher, pour les suivantes, $1 aura changé...
Je te conseillerais plutôt d'utiliser sed pour tout faire en 1 fois, genre
new=$(echo $1 | sed -e 's/[éèêë]/e/g; s/[ÈÉÊË]/E/g; ... ; s/[^a-zA-Z0-9-_ ]/_/g; s/__/_/g')
ou mieux avec
new=$(echo "$1"|sed -e 'y/áàâäçéèêëíìîïñóòôöúùûü ÁÀÂÄÇÉÈÊËÍÌÎÏÑÓÒÔÖÚÙÛÜ/aaaaceeeeiiiinoooouuuu_aaaaceeeeiiiinoooouuuu/; s/[^a-zA-Z0-9-_ ]/_/g; s/__/_/g')
# Attention, la ligne ci-dessus vire les majuscules et les espaces, je te laisse corriger
if ( "$new" != "$1")
then
echo "Renommer '$1' en '$new' ?"
read rep
[ $rep == 'o' ] && mv "$1" "$new" && echo "renommage OK"
fi
tr 'y/chars/chars/' marche aussi si tu n'es pas en utf8.
Daniel
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Bonjour, je cherche des connaisseurs shell:) En fait je cherche à faire une petite boucle qui passerais en récursif l'ensemble des fichiers Pour les nettoyer de leur accents et de leus espaces.... Voilà ce que j'ai sous la main pour le moment:
Le problème c'est qu' j'aimerais passer un test à chaque fichier pour voir si chaqe condition est respectée...
Pour cette dernière, je listerait plutôt tous les caractères acceptés et remplacerait le reste par _, du genre rename 's/[^a-zA-Z0-9-_ ]/_/g' "$1" puis virer éventuellement les _ doublés rename 's/__/_/g' "$1"
Mais tu vas avoir un pb, car seul la 1re modif va marcher, pour les suivantes, $1 aura changé...
Je te conseillerais plutôt d'utiliser sed pour tout faire en 1 fois, genre new=$(echo $1 | sed -e 's/[éèêë]/e/g; s/[ÈÉÊË]/E/g; ... ; s/[^a-zA-Z0-9-_ ]/_/g; s/__/_/g')
ou mieux avec new=$(echo "$1"|sed -e 'y/áàâäçéèêëíìîïñóòôöúùûü ÁÀÂÄÇÉÈÊËÍÌÎÏÑÓÒÔÖÚÙÛÜ/aaaaceeeeiiiinoooouuuu_aaaaceeeeiiiinoooouuuu/; s/[^a-zA-Z0-9-_ ]/_/g; s/__/_/g') # Attention, la ligne ci-dessus vire les majuscules et les espaces, je te laisse corriger if ( "$new" != "$1") then echo "Renommer '$1' en '$new' ?" read rep [ $rep == 'o' ] && mv "$1" "$new" && echo "renommage OK" fi
tr 'y/chars/chars/' marche aussi si tu n'es pas en utf8.
Daniel
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Attention à l'utf8, cf http://www.opengroup.org/onlinepubs/009695399/utilities/tr.html (merci à Vincent Lefevre)
Daniel
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Attention à l'utf8, cf http://www.opengroup.org/onlinepubs/009695399/utilities/tr.html (merci à Vincent Lefevre)
Daniel
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Attention à l'utf8, cf http://www.opengroup.org/onlinepubs/009695399/utilities/tr.html (merci à Vincent Lefevre)
Daniel
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Quand on est en utf-8, il y a mieux : # apt-get install libtext-unidecode-perl $ PERL_UNICODE=SDA perl -MText::Unidecode -pe 'unidecode($_)' <<< cö tÃnÃÑÐЯ cotOnEfLIa
par exemple: ls -1 | PERL_UNICODE=SDA perl -MText::Unidecode -ne 'rename $_, unidecode($_) or warn "$! : $_"'
Quand on est en utf-8, il y a mieux :
#Â apt-get install libtext-unidecode-perl
$ PERL_UNICODE=SDA perl -MText::Unidecode -pe 'unidecode($_)' <<< cö tÃnÃÑÐЯ
cotOnEfLIa
par exemple:
ls -1 | PERL_UNICODE=SDA
perl -MText::Unidecode -ne 'rename $_, unidecode($_) or warn "$! : $_"'
Quand on est en utf-8, il y a mieux : # apt-get install libtext-unidecode-perl $ PERL_UNICODE=SDA perl -MText::Unidecode -pe 'unidecode($_)' <<< cö tÃnÃÑÐЯ cotOnEfLIa
par exemple: ls -1 | PERL_UNICODE=SDA perl -MText::Unidecode -ne 'rename $_, unidecode($_) or warn "$! : $_"'
Pour l'espace, j'utiliserais plutôt « s/s/_/g » (ou [[:space:]] avec Sed).
sinon mais je suis pas sur : rename ' s/[=a=]/a/g;
[...]
$ echo éêè | perl -pe 's/[=e=]/e/g' POSIX syntax [= =] is reserved for future extensions in regex; marked by <-- HERE in m/[=e=] <-- HERE / at -e line 1.
Ce n'est encore qu'une promesse (sous Sarge)... -- Jacques L'helgoualc'h
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Eric DECORNOD a écrit, jeudi 19 avril 2007, à 11:48 :
Le jeudi 19 avril 2007 11:06, Cédric LE BRIS a écrit :
> Bonjour, je cherche des connaisseurs shell:) [...]
s/shell/perl/
Pour l'espace, j'utiliserais plutôt « s/s/_/g » (ou [[:space:]] avec Sed).
sinon mais je suis pas sur :
rename '
s/[=a=]/a/g;
[...]
$ echo éêè | perl -pe 's/[=e=]/e/g'
POSIX syntax [= =] is reserved for future extensions in regex;
marked by <-- HERE in m/[=e=] <-- HERE / at -e line 1.
Ce n'est encore qu'une promesse (sous Sarge)...
--
Jacques L'helgoualc'h
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Pour l'espace, j'utiliserais plutôt « s/s/_/g » (ou [[:space:]] avec Sed).
sinon mais je suis pas sur : rename ' s/[=a=]/a/g;
[...]
$ echo éêè | perl -pe 's/[=e=]/e/g' POSIX syntax [= =] is reserved for future extensions in regex; marked by <-- HERE in m/[=e=] <-- HERE / at -e line 1.
Ce n'est encore qu'une promesse (sous Sarge)... -- Jacques L'helgoualc'h
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Eric DECORNOD
Le jeudi 19 avril 2007 15:23, Jacques L'helgoualc'h a écrit :
Eric DECORNOD a écrit, jeudi 19 avril 2007, à 11:48 : [...] > sinon mais je suis pas sur : > rename ' > s/[=a=]/a/g; [...] $ echo éêè | perl -pe 's/[=e=]/e/g' POSIX syntax [= =] is reserved for future extensions in regex; marked by <-- HERE in m/[=e=] <-- HERE / at -e line 1. Ce n'est encore qu'une promesse (sous Sarge)... -- Jacques L'helgoualc'h
<troll> J'ai vu, ;-(... encore un vaporware, comme utf8 facile pour tous. </troll>
A avoir quinze moteurs de regexp différents on ne sait plus qui correspon d à quoi... « The POSIX character classes [.cc.] and [=] are recogni zed but not supported and trying to use them will cause an error. » Désolé pour les indications foireuses, j'espère m'être rattrapé a vec Text:Unidecode.
J'ai même fini par ré-écrire Text::Unidecode en Java tellement cette fonction me manque en général...
PS+HS : en parlant de troll, j'ai été surpris de l'extraordinaire mod ération dans le fil « zsh vs bash » de lundi. J'attendais un peu de spectac le ;-) (les basheux auraient-ils disparu ?)
Cordialement, -- Eric DÉCORNOD Ingénieur d'Études SCICS - Faculté des Sciences Université Henri Poincaré
Le jeudi 19 avril 2007 15:23, Jacques L'helgoualc'h a écrit :
Eric DECORNOD a écrit, jeudi 19 avril 2007, à 11:48 :
[...]
> sinon mais je suis pas sur :
> rename '
> s/[=a=]/a/g;
[...]
$ echo éêè | perl -pe 's/[=e=]/e/g'
POSIX syntax [= =] is reserved for future extensions in regex;
marked by <-- HERE in m/[=e=] <-- HERE / at -e line 1.
Ce n'est encore qu'une promesse (sous Sarge)...
--
Jacques L'helgoualc'h
<troll>
J'ai vu, ;-(... encore un vaporware, comme utf8 facile pour tous.
</troll>
A avoir quinze moteurs de regexp différents on ne sait plus qui correspon d à
quoi... « The POSIX character classes [.cc.] and [=cc=] are recogni zed but
not supported and trying to use them will cause an error. »
Désolé pour les indications foireuses, j'espère m'être rattrapé a vec
Text:Unidecode.
J'ai même fini par ré-écrire Text::Unidecode en Java tellement cette fonction
me manque en général...
PS+HS : en parlant de troll, j'ai été surpris de l'extraordinaire mod ération
dans le fil « zsh vs bash » de lundi. J'attendais un peu de spectac le ;-)
(les basheux auraient-ils disparu ?)
Cordialement,
--
Eric DÉCORNOD
Ingénieur d'Études
SCICS - Faculté des Sciences
Université Henri Poincaré
Le jeudi 19 avril 2007 15:23, Jacques L'helgoualc'h a écrit :
Eric DECORNOD a écrit, jeudi 19 avril 2007, à 11:48 : [...] > sinon mais je suis pas sur : > rename ' > s/[=a=]/a/g; [...] $ echo éêè | perl -pe 's/[=e=]/e/g' POSIX syntax [= =] is reserved for future extensions in regex; marked by <-- HERE in m/[=e=] <-- HERE / at -e line 1. Ce n'est encore qu'une promesse (sous Sarge)... -- Jacques L'helgoualc'h
<troll> J'ai vu, ;-(... encore un vaporware, comme utf8 facile pour tous. </troll>
A avoir quinze moteurs de regexp différents on ne sait plus qui correspon d à quoi... « The POSIX character classes [.cc.] and [=] are recogni zed but not supported and trying to use them will cause an error. » Désolé pour les indications foireuses, j'espère m'être rattrapé a vec Text:Unidecode.
J'ai même fini par ré-écrire Text::Unidecode en Java tellement cette fonction me manque en général...
PS+HS : en parlant de troll, j'ai été surpris de l'extraordinaire mod ération dans le fil « zsh vs bash » de lundi. J'attendais un peu de spectac le ;-) (les basheux auraient-ils disparu ?)
Cordialement, -- Eric DÉCORNOD Ingénieur d'Études SCICS - Faculté des Sciences Université Henri Poincaré
pascal
Eric DECORNOD a écrit :
PS+HS : en parlant de troll, j'ai été surpris de l'extraordinaire modération dans le fil « zsh vs bash » de lundi. J'attendais un peu de spectacle ;-) (les basheux auraient-ils disparu ?)
Mais...mais quel jour sommes-nous ? Ha oui d'accord.
Trop gros...Passera pas.
Cordialement,
De même P.
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact
Eric DECORNOD a écrit :
PS+HS : en parlant de troll, j'ai été surpris de l'extraordinaire modération
dans le fil « zsh vs bash » de lundi. J'attendais un peu de spectacle ;-)
(les basheux auraient-ils disparu ?)
Mais...mais quel jour sommes-nous ?
Ha oui d'accord.
Trop gros...Passera pas.
Cordialement,
De même
P.
--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"
To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
PS+HS : en parlant de troll, j'ai été surpris de l'extraordinaire modération dans le fil « zsh vs bash » de lundi. J'attendais un peu de spectacle ;-) (les basheux auraient-ils disparu ?)
Mais...mais quel jour sommes-nous ? Ha oui d'accord.
Trop gros...Passera pas.
Cordialement,
De même P.
-- Lisez la FAQ de la liste avant de poser une question : http://wiki.debian.net/?DebianFrench Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"
To UNSUBSCRIBE, email to with a subject of "unsubscribe". Trouble? Contact