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...
rename -n ... > rename 's/[éèêë]/e/g' "$1" > rename 's/[ÈÉÊË]/E/g' "$1" > rename 's/[àáâãäå]/a/g' "$1" > rename 's/[ÀÁÂÃÄÅ]/A/g' "$1" > rename 's/[ïîìí]/a/g' "$1" > rename 's/[ÌÍÏÎ]/I/g' "$1" > rename 's/[òóôõö]/o/g' "$1" > rename 's/[ÒÓÔÕÖ]/O/g' "$1" > rename 's/[ùúûü]/u/g' "$1" > rename 's/[ÙÚÛÜ]/U/g' "$1" > rename 's/[$!?µ£ %]/_/g' "$1" 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 [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

