Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/05/2010, à 14: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" \;

smile

Dernière modification par cracolinux (Le 18/05/2010, à 14:49)


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#2 Le 18/05/2010, à 14: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, à 14:49

cracolinux

Re : Renommage de répertoires

yep! je corrige ! merci wink


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#4 Le 18/05/2010, à 15: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, à 15:17)

Hors ligne

#5 Le 18/05/2010, à 20: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 ?


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#6 Le 18/05/2010, à 22: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, à 09:14)

Hors ligne

#7 Le 18/05/2010, à 23:24

cracolinux

Re : Renommage de répertoires

Pigé!
Merci les gars! smile


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#8 Le 19/05/2010, à 08: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, à 12: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, à 12:30)


Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#10 Le 19/05/2010, à 12: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, à 14: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, à 16:20

cracolinux

Re : Renommage de répertoires

Salut,

J'aime aussi la solution de zapple (pas de remix wink ).

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, à 19:20)


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne

#13 Le 19/05/2010, à 16: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, à 16:45)

Hors ligne

#14 Le 19/05/2010, à 17: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, à 17:51

zapple

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.

Hors ligne

#16 Le 19/05/2010, à 19:17

cracolinux

Re : Renommage de répertoires

zapple a écrit :
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 ! neutral


Merci des explications,
c'est la redirection < qui m'a un peu dérouté

Dernière modification par cracolinux (Le 19/05/2010, à 19:19)


Pixup : postez vos images vite et bien - Wificheck : Aidez nous à vous aider

« Ne devenez jamais pessimiste. Un pessimiste a plus souvent raison qu'un optimiste, mais l'optimiste s'amuse plus — et aucun des deux ne peut arrêter la marche du monde. » R.Heinlein

Hors ligne