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 12/10/2009, à 18:05

DaveNull

Petit problème de renommage.

Bonjour à tous !

Bon voilà, je suis sûr que c'est possible de le faire en GUI, mais bon, ce petit problème est je pense intéressant pour progresser dans l'apprentissage des mécanismes du shell...

Voilà le truc : Je dispose d'une dérie de fichiers/répertoires imbriqués du genre :

.
./1
./2
./2/3
./2/4
./2/4/5

Ce que je voudrais c'est faire un petit renommage récursif en rajoutant une chaine de carractère en début de nom de chaque fichier/répertoire, comme ça, par ex :

.
./xxx1
./xxx2
./xxx2/xxx3
./xxx2/xxx4
./xxx2/xxx4/xxx5

Bon, j'ai d'abord pensé à un truc du genre :

find * -exec mv {} xxx{} \;

Mais ça pose un problème au niveau de la récursivité, comme on peut le voir :

ego@Arquebuse:/tmp/plop$ find * -exec echo xxx{} \;
xxx1
xxx2
xxx2/3
xxx2/4
xxx2/4/5

Là je bloque. C'est sûrement tout con...

Vous avez une idée ?


Edit : En fait concrètement ce n'est pas pour moi seulement un bête exercice de shell, en fait la moitié gauche de l'écran de mon ipod est mort suite à  un coup, et donc je ne peux lire que la partie droite de l'écran (comme vous pouvez le voir sur cette magnifique photo). Du coup, je ne vois en général que la fin des noms de fichiers. Donc, en attendant de racheter un baladeur, je voudrais bien rallonger les noms de mes fichiers de caractères inutiles au début pour que je puisse me repérer un peu dans mon arborescence...
En une commande récursive, ce serait classe...

Dernière modification par She0gorath (Le 12/10/2009, à 18:22)


timezone[Europe/Paris]

Hors ligne

#2 Le 12/10/2009, à 18:55

AnsuzPeorth

Re : Petit problème de renommage.

Bjr,
Regarde du coté de rename, il utilise la substitution comme sed (sauf que c'est du regex perl, je ne suis pas du tout spécialiste smile)
Pour voir le résultat avec sed

find /home/user/dossier | sed 's@\(.*/\)\(.*\)$@\1xxx\2@'

Ce qui devrait donner avec rename (à tester hein ! J'ai pas fait)

find /home/user/dossier | xargs -i{} rename 's@(.*/)(.*)$@$1xxx$2@' {}

Enfin, un truc du genre, me souviens plus trés bien ($1 ou \1) smile (je rechercherais dans mes docs plus tard dans la soirée; là plus le temsp)

Dernière modification par AnsuzPeorth (Le 12/10/2009, à 18:57)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#3 Le 12/10/2009, à 21:04

DaveNull

Re : Petit problème de renommage.

Ah oui, je me suis bien dit qu'un jour il faudrait que je me penche sur ce sed... La syntaxe m'a toujours parue compliquée et le man rébarbatif, mais bon, c'est sûrement tres utile dans plein de dommaines, surtout pour scripter...

Merci en tout cas !


timezone[Europe/Paris]

Hors ligne