Charles Plessy a écrit :
Le Wed, Aug 23, 2006 at 12:39:12PM +0200, Daniel C a écrit :mais find -type f -name '*TOTO*' -exec rename 's/TOTO/titi/' {} \;renvoie "Can't rename ./unrepTOTO/unfichierTOTO /unreptiti/unfichierTOTO: Aucun fichier ou répertoire de ce type" car le rep unreptiti n'existe pas.Dans ce cas, il faut ruser:kunpuu|charles|$ rename -n 's#TOTO#titi#' repTOTO/fichTOTO repTOTO/fichTOTO renamed as reptiti/fichTOTO
Si tu enlève le -n tu auras une erreur...
kunpuu|charles|$ rename -n 's#(.*/?)TOTO#$1titi#' repTOTO/fichTOTO repTOTO/fichTOTO renamed as repTOTO/fichtiti
Et les fichiers qui seraient dans le rep courant ? (il devrait suffire d'appeler les fichiers avec ./ au début).
Pour le cas du fichier dans repTATA/repTOTO/fichierTOTO, le '?' doit marcher. J'essaie de garder ça en tête pour ne renommer que les fichiers mais pas les rep parents.
Bref, on peut jouer assez longtemps avec les regexp... et chaque cas est particulier.
J'espèrais que l'on pouvait utiliser rename 's#TOTO#titi#2' * (si on tous les fichiers à renommer sont dans un rep du rep courant)mais ce qui marche avec sed marche pas avec rename... (apparemment on peut juste mettre g ou i comme option).
Daniel
Bonne journée,
itou