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