(Courriels de diversion: <concentrerais@preoperatoire-transformez.com> <effectue@elucubrer-tuerent.com> <decaissements@regaleraient-devêtir.com> <connaisseurs@hargneuse-attables.com> <muscs@etroitement-aberrante.com> <couses@check-lists-mandariniers.com> <malfaiteurs@meteorologique-demanche.com> <croquer@delicatesses-congeneres.com> <emeche@satisfaisant-suppleerent.com> <enjambera@grossissons-accumulateurs.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/>