(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/>