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/05/2010, à 17:21

rom117

[Résolu] renommer fichiers en fonction nom répertoire conteneur

Bonjour,

Je vous explique ce que je veux faire. Imaginons que je sois dans un dossier "photos". Ce dossier a un ensemble de sous-répertoires nommés par des identifiants de personnes. Dans chacun de ces sous-répertoires, se trouve la photo de la personne nommée xxx.png, xxx.jpeg, xxx.gif etc.
Imaginons que cette photo ce trouve dans le sous répertoire "OO7". Mon but est alors de renommer la photo "photo_007.[extension]". En fait je ne veux garder que l'extension. Et je veux faire ça pour toutes les photos de tous les sous-répertoires.

Je sais qu'il faut que j'utilise la commande mv, mais après... Mystère.

Merci d'avance pour votre aide,

Romain

Dernière modification par rom117 (Le 30/05/2010, à 20:22)

Hors ligne

#2 Le 30/05/2010, à 18:15

kyncani

Re : [Résolu] renommer fichiers en fonction nom répertoire conteneur

find /repertoire/des/photos/ -type f | rename -n 's#^(.*/)([^/]+)/([^/]+)(\.[^/\.]*)$#${1}photo_${2}$4#'

La commande ne comporte ainsi aucun risque.
Si le renommage te convient, retire l'option -n de rename.

Par ailleurs, pour supprimer tous les répertoires vides :

find /repertoire/ -type d | perl -nle rmdir

Hors ligne

#3 Le 30/05/2010, à 19:03

rom117

Re : [Résolu] renommer fichiers en fonction nom répertoire conteneur

Trop bien ça marche !
Alors (re)merci à toi kyncani. Seule petite chose... Je ne maîtrise pas du tout les regex... tu pourrais m'expliquer la regex de ton code ??

Merci smile

Dernière modification par rom117 (Le 30/05/2010, à 19:03)

Hors ligne

#4 Le 30/05/2010, à 19:24

kyncani

Re : [Résolu] renommer fichiers en fonction nom répertoire conteneur

C'est (encore) du perl smile
J'avais appris les rudiments de perl il y a quelques années alors que python n'avait pas encore tant le vent en poupe.

Hors ligne

#5 Le 30/05/2010, à 19:53

rom117

Re : [Résolu] renommer fichiers en fonction nom répertoire conteneur

Attends tu me fais peur là...
Ca : 's#^(.*/)([^/]+)/([^/]+)(\.[^/\.]*)$#${1}photo_${2}$4#'  c'est du perl ??

Hors ligne

#6 Le 30/05/2010, à 20:18

kyncani

Re : [Résolu] renommer fichiers en fonction nom répertoire conteneur

Oui, une substitution perl.
C'est assez concis au niveau de l'expression par rapport à la façon de le dire en français, je te l'accorde.
Ceci dit, les expressions régulières perl, comme tu en vois une, sont tellement puissantes qu'elles ont été reprises dans beaucoup de langages.

Hors ligne

#7 Le 30/05/2010, à 20:21

rom117

Re : [Résolu] renommer fichiers en fonction nom répertoire conteneur

Oula... faut vraiment que je m'y mette à ce PERL ça a l'air bien puissant. Bon ça me fait peur en même temps, mais comme on trouve tout sur le net...

Merci encore à toi.

Résolu !

Hors ligne

#8 Le 30/05/2010, à 21:22

kyncani

Re : [Résolu] renommer fichiers en fonction nom répertoire conteneur

En même temps, perl maintenant, ce n'est peut-être (certainement) pas la meilleure idée.
Avant j'utilisais perl lorsque bash ne suffisait pas mais maintenant python est quand même beaucoup plus clair que perl tout en offrant les mêmes fonctionnalités.
Et puis le tutoriel officiel python est quand même exceptionnel (je ne sais pas si on le trouve en français).

Hors ligne