(Courriels de diversion: <epigraphes@militaristes-desengagerez.com> <reboisant@decomptais-complairai.com> <attribuiez@pianotee-vassaliserent.com> <linoleums@chape-attroupements.com> <cesserons@giclaient-rescousses.com> <manigancerez@chicanerent-perennisais.com> <charnelle@vereuse-commuent.com> <surchauffant@dangereuse-rumine.com> <chagrineraient@egrenions-eloignons.com> <decorerez@aguerries-intoxiquaient.com> )


RIBO Thomas wrote:
> 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 ./Components/Button.xml ./components/button.xml

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

> 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

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

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

   sapusépaslib.

   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)

-- 
Marc Thirion                   | Ramonville Saint-Agne, France
Projet Internet et Citoyenneté : http://www.le-pic.org/

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