|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Nouveau Membre du Club
![]() Inscription : septembre 2008 Messages : 99 ![]() |
Bonjour,
Je ne sais pas comment donner un titre à mon sujet, désolé mais je vais essayer de vous expliquer! Voilà, j'ai des sous repertoires qui contiennent des fichiers .exe, dans chaque sous repertoire. exp: /toto/titi/tata/ dans toto, titi et tata, se trouvent des fichiers .exe j'aimerai renomer ces fichiers en .txt. Si j'avais des fichiers .exe uniquement par exemple dans /toto/titi/tata/*.exe, la solution est facile, faire juste: Code :
J'ai pensé à find puis pipe |, mais je n'ai pas d'idée pour la syntaxe Merci pour votre aide, je suis un débutant sur linux et le shell |
||
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé Sénior
![]() Laurent WillemsExpert Stop/Start Inscription : septembre 2002 Messages : 2 555 ![]() |
Salut,
Code :
__________________
Alea Jacta Test! |
||
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() Inscription : septembre 2008 Messages : 99 ![]() |
Bonjour
Merci pour ton code, effectivement ça parcourt les sous répertoire, mais là je viens d'exécuter le programme ça marche, mais je n'ai plus les fichiers dans leurs répertoire mais à l'endroit de l'exécution du script! En gros, mes fichier son renommé et déplacé dans mon répertoire courant. dans mon home, j'ai tous les fichiers en .txt, donc complètement déplacé des sous répertoires! ca vient de la commande mv! est ce que tu as une solution, ou quelqu'un sur ce forum?? merci |
|
|
00
|
|
|
#4 | ||
|
Expert Confirmé Sénior
![]() Laurent WillemsExpert Stop/Start Inscription : septembre 2002 Messages : 2 555 ![]() |
Re,
oui effectivement. tu peux récupérer le répertoire d'origine avec dirname pour les stocker au même endroit Code :
__________________
Alea Jacta Test! |
||
|
|
00
|
|
|
#5 |
|
Nouveau Membre du Club
![]() Inscription : septembre 2008 Messages : 99 ![]() |
Désolée, mais ca ne marche pas,
est ce qu'il ne faut pas inverser $target_dir? si je fais mv $i $taget_dir `basename $i .exe`.txt j'ai le message: when moving multiple files, last argument must be a directory j'ai aussi essayé de faire: mv $target_dir $i `basename $target_dir $i .exe`.txt, une vrai cata! je suis à côté! merci |
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé Sénior
![]() Laurent WillemsExpert Stop/Start Inscription : septembre 2002 Messages : 2 555 ![]() |
Code :
__________________
Alea Jacta Test! |
||
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : septembre 2008 Messages : 99 ![]() |
Merciiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
ca marche, c'est super
|
|
|
00
|
|
|
#8 |
![]() ![]() Yves ReechtChercheur Inscription : septembre 2006 Messages : 1 920 ![]() |
Bonjour,
Pour info, puisque le problème semble résolu : cette tâche peut être effectuée grâce aux possibilités offertes par find (entre autres !): Code :
find toto -name "*.exe" -type f -exec bash -c "mv '{}' \`dirname '{}'\`/\`basename '{}' .exe\`.txt" \; * Edit: vous y trouverez également une autre solution intéressante à base de AWK... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com