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