|
Publicité | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre à l'essai
![]() Inscription : février 2006 Messages : 91 ![]() |
Bonjour à tous
J'ai un répertoire contenant de nombreux répertoires, eux-mêmes contenant d'autres nombreux sous-répertoire. Certains sont en majuscules, d'autres en minuscules, d'autres un peu des 2.... Ce que j'aimerai, c'est renommé tout les répertoires et sous-répertoire du répertoire d'origine en majuscule. Je me doute que je dois faire une boucle pour rechercher tout les répertoires puis de les renommer après avoir appliquer un tr dessus mais mon souci c'est que je ne dois pas m'y prendre dans le bon sens car après avoir renommé les 1er répertoires, il ne retrouve plus les sous-répertoires de ces répertoires....logique ils ont déjà changé de nom.... Exemple : Code :
Code :
Merci de votre aide ! |
||||
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé
![]() Inscription : février 2008 Messages : 1 897 ![]() |
Code :
Dernière modification par N_BaH ; 28/02/2010 à 17h58. |
||
|
|
00
|
|
|
#3 | ||
|
Membre chevronné
![]() Inscription : septembre 2007 Messages : 685 ![]() |
Une solution:
Code :
__________________
Un problème bien posé est déjà résolu (H. Bergson). |
||
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() budget et contrôle de gestion Inscription : décembre 2006 Messages : 865 ![]() |
Salut,
Je vais encore mettre mon grain de sel dans vos jolies boucles de programmes. Mais la commande rename permet cela (à intégrer dans une boucle bien sûr). Code :
rename "y/[A-Z]/[a-z]/" <ce_que_tu_veux_renommer>
__________________
Winnt C'est en Linuxant qu'on devient .... geek ![]() Intel Core i5 750 / 8 Go ram / Hdd 2 To / NVIDIA GeForce GTS 250 1Go sous Gentoo. Dual core E6300 / 2Go ram / Hdd 1 To / Ati 9800XT sous Debian Testing. Atom N330 / 4Go ram / Hdd 5To / intel GMA 950 sous Debian Testing |
|
|
00
|
|
|
#5 |
|
Membre chevronné
![]() Inscription : septembre 2007 Messages : 685 ![]() |
As-tu essayé, winnt?
Exemple: dir1/dir2/dir3 --> dir1/dir2/DIR3 On ne change qu'un seul nom de répertoire à la fois dans les sous-répertoires sinon...
__________________
Un problème bien posé est déjà résolu (H. Bergson). |
|
|
00
|
|
|
#6 | ||
|
Membre Expert
![]() budget et contrôle de gestion Inscription : décembre 2006 Messages : 865 ![]() |
Salut,
Le problème de amans m'ayant intéressé je me suis penché dessus à faire un petit script (largement perfectible) afin de récupérer la liste des répertoires (et ceci sans awk Code :
__________________
Winnt C'est en Linuxant qu'on devient .... geek ![]() Intel Core i5 750 / 8 Go ram / Hdd 2 To / NVIDIA GeForce GTS 250 1Go sous Gentoo. Dual core E6300 / 2Go ram / Hdd 1 To / Ati 9800XT sous Debian Testing. Atom N330 / 4Go ram / Hdd 5To / intel GMA 950 sous Debian Testing |
||
|
|
00
|
|
|
#7 | ||
|
Membre chevronné
![]() Inscription : septembre 2007 Messages : 685 ![]() |
Winnt, en gros tu voudrais faire ce que fait la commande
Mais sans utiliser find, Okay? Alors regarde: Code :
__________________
Un problème bien posé est déjà résolu (H. Bergson). |
||
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() budget et contrôle de gestion Inscription : décembre 2006 Messages : 865 ![]() |
Salut,
Merci pour ce bout de code jmelyn. Je m'en vais le décortiquer de ce pas. Et parfaire ma culture
__________________
Winnt C'est en Linuxant qu'on devient .... geek ![]() Intel Core i5 750 / 8 Go ram / Hdd 2 To / NVIDIA GeForce GTS 250 1Go sous Gentoo. Dual core E6300 / 2Go ram / Hdd 1 To / Ati 9800XT sous Debian Testing. Atom N330 / 4Go ram / Hdd 5To / intel GMA 950 sous Debian Testing |
|
|
00
|
|
|
#9 | ||
|
Membre à l'essai
![]() Inscription : février 2006 Messages : 91 ![]() |
Merci à tous pour votre aide !
Désolé de ne pas avoir répondu plus tôt... En fait j'ai trouvé comment faire même si c'est relativement bourrin... Code :
|
||
|
|
00
|
|
|
#10 | ||
![]() ![]() Yves ReechtChercheur Inscription : septembre 2006 Messages : 1 920 ![]() |
Bonjour à tous,
Pourquoi s'embêter à faire des boucles puisque la commande find peu s'en charger ? Code :
__________________
Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !) Une solution vous convient ? N'oubliez pas le tag ![]() )><))))°> |
||
|
|
00
|
|
|
#11 |
|
Membre à l'essai
![]() Inscription : février 2006 Messages : 91 ![]() |
dans mon find je n'ai pas l'option execdir... seulement exec
y-a-t'il une différence ? parceque juste avec exec, il ne se passe rien :/ je connais pas bien la commande rename en même temps, ça vient peut-être de là |
|
|
00
|
|
|
#12 |
![]() ![]() Yves ReechtChercheur Inscription : septembre 2006 Messages : 1 920 ![]() |
-execdir exécute la commande suivante à partir du sous-répertoire contenant le fichier trouvé et non du dossier racine (e.g. l'argument '{}' représente ./Test2 [commande exécutée dans ./TEST2/TEST1/] au lieu de ./TEST2/TEST1/Test2 [commande exécutée dans ./]).
Tu n'as pas l'action (voir man find) ou bien find refuse l'exécution ? Ce dernier cas pourrait être du à des chemins relatifs dans ton $PATH.
__________________
Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !) Une solution vous convient ? N'oubliez pas le tag ![]() )><))))°> |
|
|
00
|
|
|
#13 |
|
Membre à l'essai
![]() Inscription : février 2006 Messages : 91 ![]() |
je ne l'ai pas du tout dans le man...
mais en tout cas c'est bon à savoir, le jour où je tombe sur une autre version de find |
|
|
00
|
|
|
#14 | ||
|
Expert Confirmé
![]() Inscription : février 2008 Messages : 1 897 ![]() |
Contrairement à ce que j'aurais pensé, sur 122 répertoires, find met plus de temps à effectuer ce traitement :
Code :
Dernière modification par N_BaH ; 01/03/2010 à 15h27. |
||
|
|
00
|
|
|
#15 | ||
|
Membre chevronné
![]() Inscription : septembre 2007 Messages : 685 ![]() |
Pour les temps d'exécution, find devrait normalement être plus rapide. Mais il y a aussi le temps de la commande et l'option -execdir doit surement faire un cd à chaque fois, ce qui est assez long.
C'est lequel ton script? As-tu mesuré celui que j'ai posté, ainsi que celui d'Amans? En optimisant ce dernier un peu, on obtient: Code :
__________________
Un problème bien posé est déjà résolu (H. Bergson). |
||
|
|
00
|
|
|
#17 | ||
|
Membre chevronné
![]() Inscription : septembre 2007 Messages : 685 ![]() |
As-tu Bash version 4 (bash --version)? Le cas échéant, peux-tu tester ceci:
Code :
__________________
Un problème bien posé est déjà résolu (H. Bergson). |
||
|
|
00
|
|
|
#18 |
|
Expert Confirmé
![]() Inscription : février 2008 Messages : 1 897 ![]() |
j'ai bash4 sur une Squeeze en VServer, dont je ne me sers pas assez
résultat : real 0m0.516s user 0m0.176s sys 0m0.264s fiou!!! la vache ! |
|
|
00
|
|
|
#19 | ||
|
Membre chevronné
![]() Inscription : septembre 2007 Messages : 685 ![]() |
Attends, c'est la même machine et les mêmes répertoires à modifier, n'est-ce pas? C'est la raison pour laquelle je t'ai demandé d'essayer.
Pour encore optimiser, je ferais bien encore cela: Code :
L'accélération est due au traitement qui ne sort pas du shell pour changer la casse du nom.
__________________
Un problème bien posé est déjà résolu (H. Bergson). |
||
|
|
00
|
|
|
#20 | |
|
Expert Confirmé
![]() Inscription : février 2008 Messages : 1 897 ![]() |
Citation:
Et toujours 120 répertoires. un petit oubli : Code :
[[ "$leaf" != "." && "$path" != "$newPath" ]] && mv "$path" "$newPath" Dernière modification par N_BaH ; 01/03/2010 à 17h29. |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com