(Courriels de diversion: <couses@check-lists-mandariniers.com> <malfaiteurs@meteorologique-demanche.com> <croquer@delicatesses-congeneres.com> <emeche@satisfaisant-suppleerent.com> <enjambera@grossissons-accumulateurs.com> <indifferemment@eluciderez-cueillais.com> <malversation@convenu-insonorisait.com> <vilipendees@encapsules-deformons.com> <imaginerez@maîtresse-blinderont.com> <supportant@tueuse-indistinctes.com> )


marc Thirion wrote:

>> mv ./Components/Button.xml ./components/button.xml
> 
>   Tu voudrais "mv ./Components/Button.xml ./Components/button.xml" ?

À un instant t, oui, mais par la suite, ou avant, il faut renommer aussi 
le répertoire.

>> Je ne sais pas comment donner une entrée à awk sans faire un fichier 
>> ni un pipe, mais il va bien falloir lui donner le nom du fichier 
>> courant à manger...
> 
>   Passe par un fichier (c'est possible sans ; c'est laissé en exercice 
> au lecteur).
> 
>   Donc :
> find . -print | sed -e 's/^/f /' > /tmp/b
> 
> éditer /tmp/b et ajouter au début :
> f() {
>    dir=$(dirname "$1")
>    FILE=$(basename "$1")
>    file=$(echo "$FILE" | tr 'A-Z' 'a-z')
>    echo mv "$1" "$dir/$file"
> }
> 
> puis ksh /tmp/b

Pas mal cette solution, avec le regret de l'écrire en plusieurs lignes. 
Je n'ai pas eu le réflexe de bien regarder le man de mon shell pour 
trouver des fonctions qui séparent les chemins des fichiers et tout ça. 
Merci du conseil. J'ai vérifié, ça existe aussi en csh, mais bon, j'ai 
le script tout prêt, donc n'ergotons pas.

> (quand tu es content, tu retires le "echo" (plus prudent, parce que j'ai 
> pas testé).

Donc en fait, il faut utiliser l'option -depth car on traite les dossier 
un par un. Si on modifie un dossier avant les fichiers qu'il contient, 
toutes les lignes concernant les dossier deviennent fausses. Ex:

mv ./Components ./components
mv ./Components/Button.xml ./Components/button.xml

>> forcément installés sur ma cible (IRIX 6.5).
>   sapusépaslib.

Pas toujours le choix, malheureusement. ;-)

>   A adapter si tu n'as pas de shell POSIX sous la main (remplace $(...) 
> par `...` ; adapter le tr éventuellement [possible qu'il faille [] 
> autour des arguments]).
> 
>   Adapter la ligne "find ..." si les noms de fichiers ou de répertoires 
> peuvent contenir des caractères spéciaux pour le shell (espace, *, saut 
> de ligne, ?, [, etc)

Tout marche bien, merci. Le shell est POSIX et m'amène d'ailleurs 
quelques options intéressantes pour tr. Voir le script final ici :
-----------8<-----------------8<----------------------
f() {
    dir=$(dirname "$1")
    FILE=$(basename "$1")
    file=$(echo "$FILE" | tr [:upper:] [:lower:])
    mv "$1" "$dir/$file"
}

for i in `find . -depth -print`
do
         f $i
done
-----------8<-----------------8<----------------------

Et merci aux autres également pour leurs solutions. Le concours est 
toujours ouvert pour trouver la solution la plus efficace, la plus 
élégante, la plus "une-seule-ligne", etc. ;-) Je ne garantie pas de 
toutes les tester par contre, désolé.

-- 
tharibo @@ nekeme POINT net
http://www.nekeme.net : Promouvoir le libre ludique

"Le temps ne fait rien à l'affaire, quand on est con, on-est-con !"
-- Georges Brassens

--------------------------------------------------------------------
Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>