Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

Attention, une faille de sécurité dans bash a récemment été rapportée, il est recommandé de mettre à jour son système (plus de détails) *** mise à jour 12/10/2014 ***

#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)


« Ce pangramme autodescriptif en hommage à Douglas Hofstadter, Lee Sallows, Jacques Pitrat, Nicolas Graner et Éric Angelini contient exactement dix-sept a, un b, onze c, huit d, trente-cinq e, cinq f, neuf g, six h, vingt-quatre i, deux j, un k, sept l, six m, vingt-six n, onze o, huit p, huit q, onze r, quinze s, vingt-sept t, dix-sept u, quatre v, deux w, neuf x, un y, et cinq z. »
— oulipo

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 !


« Ce pangramme autodescriptif en hommage à Douglas Hofstadter, Lee Sallows, Jacques Pitrat, Nicolas Graner et Éric Angelini contient exactement dix-sept a, un b, onze c, huit d, trente-cinq e, cinq f, neuf g, six h, vingt-quatre i, deux j, un k, sept l, six m, vingt-six n, onze o, huit p, huit q, onze r, quinze s, vingt-sept t, dix-sept u, quatre v, deux w, neuf x, un y, et cinq z. »
— oulipo

Hors ligne

Haut de page ↑