Pages : 1
#1 Le 18/05/2010, à 13:24
- cracolinux
Renommage de répertoires
Bonjour !
Voici l'arborescence en question :
|-- dossier1
| `-- toto
|-- dossier2
| -- toto
|-- dossierX
| -- toto
Je voudrais renommer les dossiers "toto" en "tata"
J'ai essayer ça sans succès :
cd /monrepertoire
find . -name "toto" -exec mv -T {} "tata" \;
Dernière modification par cracolinux (Le 18/05/2010, à 13:49)
Hors ligne
#2 Le 18/05/2010, à 13:32
- mael78
Re : Renommage de répertoires
pourquoi rm ? ça serais pas mv plutot?
---------------------“In the Beginning...was the Command Line”----------------------
HTPC athlon64 x2 4000+/GF GT430/Auzen X-Plosion/2GO DDR2 sous LiveXBMC
Desktop Corei7 920/GF GTX560TI/3GO DDR3 sous multiboot Ubuntu 11.10(Cinnamon)/Seven
Laptop Acer Turion64 x2/Mobility Radeon X1300/2 GO DDR2 sous Mint 12 LXDE
Hors ligne
#3 Le 18/05/2010, à 13:49
- cracolinux
Re : Renommage de répertoires
yep! je corrige ! merci
Hors ligne
#4 Le 18/05/2010, à 14:14
- troisseize
Re : Renommage de répertoires
Salut!!
mkdir -p test/dossier1/toto test/dossier2/toto test/dossierX/toto
cd test/
Effectivement le problème de la commande du premier post est qu'elle est équivalente à:
mv dossier1/toto ./tata
mv dossier2/toto ./tata
mv dossier3/toto ./tata
au lieu de :
mv dossier1/toto dossier1/tata
mv dossier2/toto dossier2/tata
mv dossier3/toto dossier3/tata
un début de solution (find laisse des message d'erreur, mais ça fais le travail)
find . -name 'toto' -exec rename s/toto/tata/ {} \;
par contre je n'ai pas réussi à utiliser dirname et basename:
find . -name 'toto' -exec echo $(dirname {}) \;
ne marche pas
Dernière modification par troisseize (Le 18/05/2010, à 14:17)
Hors ligne
#5 Le 18/05/2010, à 19:33
- cracolinux
Re : Renommage de répertoires
find . -name 'toto' -exec rename s/toto/tata/ {} \;
Je comprends pas la partie rename...
tu peux m'éclairer ?
Hors ligne
#6 Le 18/05/2010, à 21:47
- zapple
Re : Renommage de répertoires
En fait c'est très simple, mais il suffit d'y penser :
find . -type d -name toto -exec mv {} {}/../tata \;
Bien que le message t'affichera
find: "./dossier1/toto": Aucun fichier ou dossier de ce type
Tes dossiers toto seront bien renommés en tata.
edit modo : balises [code]
Dernière modification par nesthib (Le 19/05/2010, à 08:14)
Hors ligne
#7 Le 18/05/2010, à 22:24
- cracolinux
Re : Renommage de répertoires
Pigé!
Merci les gars!
Hors ligne
#8 Le 19/05/2010, à 07:31
- serged
Re : Renommage de répertoires
et un petit -type d pour ne trouver que les répertoires...
LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)
Hors ligne
#9 Le 19/05/2010, à 11:29
- Postmortem
Re : Renommage de répertoires
Salut !
for rep in $(find . -type d -name toto)
do
mv $rep ${rep%/*}/tata
done
Edit : S'il y a des espaces dans les noms de répertoire, suis pas certain que ça fonctionne par contre !
Dernière modification par Postmortem (Le 19/05/2010, à 11:30)
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#10 Le 19/05/2010, à 11:41
- Postmortem
Re : Renommage de répertoires
Comme ça, ça prend en compte les éventuels chemins contenant des espaces :
find . -type d -name toto > list.tmp
while read rep
do
mv "$rep" "${rep%/*}/tata"
done < list.tmp
rm list.tmp
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#11 Le 19/05/2010, à 13:09
- troisseize
Re : Renommage de répertoires
pour rename, ça sert à renomer, mais on l'utilise plutot pour les fichiers.
J'ai trouvé ce lien là dessus (par exemple):
http://www.cyberciti.biz/tips/renaming- … rompt.html
J'aime beaucoup la solution de zapple! j'ai d'abord crus que ça ne marchait pas pour les sous-sous-(etc...)-dossier, mais si!
Hors ligne
#12 Le 19/05/2010, à 15:20
- cracolinux
Re : Renommage de répertoires
Salut,
J'aime aussi la solution de zapple (pas de remix ).
Mais j'ai pas compris la solution de Postmortem en revanche :
Code:
find . -type d -name toto > list.tmp
while read rep
do
mv "$rep" "${rep%/*}/tata"
done < list.tmp
rm list.tmp
Dernière modification par cracolinux (Le 19/05/2010, à 18:20)
Hors ligne
#13 Le 19/05/2010, à 15:43
- troisseize
Re : Renommage de répertoires
find . -type d -name toto > list.tmp
te te stock le nom des répertoire 'tata' en colonne dans le fichier list.tmp
while read rep
do
echo $rep
done < list.tmp
permet de boucler sur les répertoire contenus dans list.tmp
${rep%/*}
retourne $rep en enlevant tout ce qu'il y a après le dernier '/' ('/' compris)
par exemple
s='un:deux:trois'
echo ${s%:*}
affiche
un:deux
Dernière modification par troisseize (Le 19/05/2010, à 15:45)
Hors ligne
#14 Le 19/05/2010, à 16:32
- Postmortem
Re : Renommage de répertoires
Je comptais faire l'explication plus tard mais troisseize m'a devancé !
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#15 Le 19/05/2010, à 16:51
- zapple
Re : Renommage de répertoires
Salut,
J'aime aussi la solution de zapple remix serged.
Ma commande contenait déjà l'option -type d.
Hors ligne
#16 Le 19/05/2010, à 18:17
- cracolinux
Re : Renommage de répertoires
cracolinux a écrit :Salut,
J'aime aussi la solution de zapple remix serged.
Ma commande contenait déjà l'option -type d.
Ah, ben excuses moi alors !
Merci des explications,
c'est la redirection < qui m'a un peu dérouté
Dernière modification par cracolinux (Le 19/05/2010, à 18:19)
Hors ligne