#1 Le 30/06/2006, à 12:31
- Onlyrider
Besoin d'aide pour un script BASH tres simple :/
Bonjour a tous.
Je m'adresse a vous afin d'obtenir un peu d'aide concernant la programmation bash. Etant encore débutant, je voulais élaborer un script qui me permettrait de renommer automatiquement des noms de dossiers en remplacant tous les "-" par des " - " et les "_" par des " ", suite a un paquet de dossiers recupérés d'un disque d'un collegue (ex: nom1_nom2-categorie-annee deviendrait nom1 nom2 - categorie - annee)
J'ai essayé une certaine commande (find, sed, mv) mais sans succes. Quelqu'un pourrait-il m'aider?
Merci d'avance.
#2 Le 30/06/2006, à 15:28
- FNaBs
Re : Besoin d'aide pour un script BASH tres simple :/
Bonjour,
Le script suivant devrait résoudre ton problème (à lancer dans le dossier où sont les dossiers à modifier).
for rep in $(find . -d)
do
cible=$(echo $rep | sed -e 's/-/ - /g' -e 's/_/ /')
mv $rep "$cible"
done
le find . -d permet de récupérer tous les dossiers existants depuis le répertoire courant.
La commande sed te permet de changer les "-" en " - " et les "_" en " ". On récupère le nouveau nom dans la variable cible.
Le mv te permet de faire le changement de nom.
Attention, le changement de nom se fait sur tous les dossiers quelqu'il soit, vérifie avant qu'il n'y a bien que les dossiers que tu veux modifier dans le dossier courant.
Sauvegarde les dossiers en question avant de faire la modification pour éviter tout problème.
Hors ligne
#3 Le 30/06/2006, à 17:42
- Onlyrider
Re : Besoin d'aide pour un script BASH tres simple :/
Tout d'abord, merci beaucoup pour ta reponse.
Je viens de tester ton script a l'instant et je constate quelques défauts:
- Tous les "_" ne sont pas enlevés... certains persistent encore... pourquoi? En règle general, le premier du nom est correctement remplacé, pas les autres...
- malgré le find . -d, le terminal m'affiche a chaque fois qu'il lui a été impossible de renommer les fichiers contenus dans chacun des dossiers, ce qui donne donc plusieurs centaines du type" mv:Cannot move 'blablabla' to 'blablabla':No such file or directory.
Vois tu comment corriger ces quelques erreurs?
Merci.
#4 Le 01/07/2006, à 12:38
- Noé
Re : Besoin d'aide pour un script BASH tres simple :/
Pour le premier problème :
for rep in $(find . -d)
do
cible=$(echo $rep | sed -e 's/-/ - /g' -e 's/_/ /g')
mv $rep "$cible"
done
dotdotno ou Phlogistique sur IRC
Jabber : noe.rubinstein CHEZ fritalk.com
Hors ligne
#5 Le 02/07/2006, à 16:12
- Bruc
Re : Besoin d'aide pour un script BASH tres simple :/
Bien que ce script est à lancer depuis le répertoire personnel, il faut veiller à ce qu'il n'y ait pas de problème de droits ou de propriétaire sur les répertoires sinon find affichera des messages d'erreur.
Hors ligne
#6 Le 02/07/2006, à 21:10
- Noé
Re : Besoin d'aide pour un script BASH tres simple :/
for rep in $(ls -p | grep / )
do
cible=$(echo $rep | sed -e 's/-/ - /g' -e 's/_/ /g' -e 's/\/$//')
mv $rep "$cible"
done
dotdotno ou Phlogistique sur IRC
Jabber : noe.rubinstein CHEZ fritalk.com
Hors ligne
#7 Le 07/07/2006, à 16:55
- Onlyrider
Re : Besoin d'aide pour un script BASH tres simple :/
Merci beaucoup de votre aide, tout marche super!
Ca me facilite la tâche et accélere mon travail!