Shell renommer dossier
Résolu
remousse
Messages postés
299
Date d'inscription
Statut
Membre
Dernière intervention
-
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
zipe31 Messages postés 36402 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'aimerai renommer un dossier dans un script shell.
Mon dossier se nomme toto.toto.toto et j'aimerai qu'il devienne toto_toto_toto.
Je ne peux pas utiliser la commande mv étant donné que le nom de dossier est récupéré et non créé à la main.
J'ai essayé rename 's/./_/g' toto.toto.toto mais cela n'a pas fonctionné.
Par avance merci
J'aimerai renommer un dossier dans un script shell.
Mon dossier se nomme toto.toto.toto et j'aimerai qu'il devienne toto_toto_toto.
Je ne peux pas utiliser la commande mv étant donné que le nom de dossier est récupéré et non créé à la main.
J'ai essayé rename 's/./_/g' toto.toto.toto mais cela n'a pas fonctionné.
Par avance merci
A voir également:
- Shell renommer dossier
- Dossier appdata - Guide
- Classic shell - Télécharger - Personnalisation
- Renommer des fichiers en masse - Guide
- Renommer iphone - Guide
- Impossible de supprimer un dossier - Guide
6 réponses
hello
pourtant avec rename ...
pourtant avec rename ...
$ ls tata.tata.tata toto.toto.toto $ rename 's/\./_/g' * $ ls tata_tata_tata toto_toto_toto $ $
Non la commande rename ne fait rien du tout et je ne peux pas rentrer en dur le nom du dossier.
En fait il faut que je remplace les "." en "_" sur mon nom de dossier que je ne connais pas à l'avance.
En fait il faut que je remplace les "." en "_" sur mon nom de dossier que je ne connais pas à l'avance.
dossierO = $(ls *.*.*/) dossierD = $(echo $dossierO | tr "." "_" ); mv dossierO dossierDle principe est de mettre le nom de dossier (en supposant qu'in n'y en a qu'un, sinon, on peut adapter) dans une variable, puis de passer cette variable à "tr" pour remplacer tout les points par des soulignés, sauver le résultat dans une variable.
Et enfin renommer le tout.
Note que je n'ai pas testé.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai relu mon script justement pour retrouver le moment où je récupère le nom du dossier.
Je le récupère comme ceci: id=$(echo $file | cut -b-17)
Donc le mieux serait de pouvoir modifier la variable directement au lieu de passer par un dossier "tampon" mais pareil la modification de variable peut-elle se faire avec sed ou autre ?
Je le récupère comme ceci: id=$(echo $file | cut -b-17)
Donc le mieux serait de pouvoir modifier la variable directement au lieu de passer par un dossier "tampon" mais pareil la modification de variable peut-elle se faire avec sed ou autre ?
Donc le nom de ton dossier se trouve dans "id" ?
A adapter à ton cas :
A adapter à ton cas :
$ VAR="toto.toto.toto" $ echo ${VAR//\./_} toto_toto_toto $ ls tata.tata.tata/ toto.toto.toto/ $ for i in *;do echo ${i//\./_};done tata_tata_tata toto_toto_toto $ for i in *;do mv -v "${i}" "${i//\./_}";done « tata.tata.tata » -> « tata_tata_tata » « toto.toto.toto » -> « toto_toto_toto » $ ls tata_tata_tata/ toto_toto_toto/ $
Quelle version de "rename" ?
;-((