(Courriels de diversion: <elucubrer@tuerent-decaissements.com> <regaleraient@devêtir-connaisseurs.com> <hargneuse@attables-muscs.com> <etroitement@aberrante-couses.com> <check-lists@mandariniers-malfaiteurs.com> <meteorologique@demanche-croquer.com> <delicatesses@congeneres-emeche.com> <satisfaisant@suppleerent-enjambera.com> <grossissons@accumulateurs-indifferemment.com> <eluciderez@cueillais-malversation.com> )


Bonsoir à tous.

Je bute sur un problème assez bête : je voudrais renommer toute une 
arborescence avec des noms de fichiers et de répertoire en minuscules 
exclusivement.

Je pensais m'en sortir assez simplement à coup de find et d'awk, mais ce 
n'est pas si simple.

Je suis en csh, et voici ce que j'ai fait pour regarder :

kiswa 781% foreach i ( `find . -print` )
foreach? set n=`echo $i | awk '{print tolower()'}`
foreach? echo mv $i $n
foreach? end
mv . .
mv ./Components ./components
mv ./Components/Button.xml ./components/button.xml
mv ./Components/Geometries ./components/geometries
mv ./Components/Geometries/Textures ./components/geometries/textures
mv ./Components/Geometries/Textures/Button.png 
./components/geometries/textures/button.png
mv ./Components/Geometries/Button.wrl ./components/geometries/button.wrl
[...]

On voit bien qu'avec un truc comme ça, ça ne peut pas marcher. Utiliser 
l'option -depth ne règle pas plus le problème parce que tout le chemin 
est affiché en minuscule de toutes façons.

J'avais bien envie de l'écrire uniquement avec find, mais je ne sais pas 
comment m'y prendre, car il faudrait que find soit capable d'oublier ou 
de se souvenir de ce qu'il vient de faire, sans boucler et tout ça.

En essayant de simplement faire afficher le résultat transformé par 
find, ça ne fonctionne pas :
kiswa 791% find . -exec echo {} \| awk '{print tolower()}' \;
. | awk {print tolower()}
./Components | awk {print tolower()}
./Components/Button.xml | awk {print tolower()}
./Components/Geometries | awk {print tolower()}
./Components/Geometries/Textures | awk {print tolower()}
./Components/Geometries/Textures/Button.png | awk {print tolower()}
./Components/Geometries/Button.wrl | awk {print tolower()}
[...]

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...

Et il faut encore après ça faire un mv, en espérant que find est bien 
programmé pour gérer ce genre de cas...

Si quelqu'un a une solution, même différente, je suis preneur. Les 
solutions doivent utiliser des outils standards Unix, et ne pas utiliser 
d'options spécifiques aux outils GNU, car ils ne sont pas forcément 
installés sur ma cible (IRIX 6.5). Enfin, vous pouvez les donner pour la 
postérité bien sûr, mais ça ne m'aidera pas beaucoup ;-)

Merci d'avance.

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