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 30/06/2006, à 13: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. roll

#2 Le 30/06/2006, à 16: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, à 18: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, à 13: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, à 17: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, à 22: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, à 17:55

Onlyrider

Re : Besoin d'aide pour un script BASH tres simple :/

big_smile Merci beaucoup de votre aide, tout marche super!
Ca me facilite la tâche et accélere mon travail! cool