# [REGEXP] Renommer plusieurs fichiers

## Trevoke

J'utilise amarok recemment et, en fait, ma collection de musique est un bordel absolument innommable. J'ai essaye leur outil pour re-organiser plusieurs fois, et maintenant j'ai un bon paquet de fichiers dans des repertoires et sous-repertoires avec .mp3.mp3.mp3.mp3 par exemple.

Comment puis-je les renommer de facon a ce qu'ils aient juste .mp3 ... Sans le faire a la main? Je commence a peine avec regexp et je ne sais pas comment faire ca.

Merci  :Smile: 

----------

## xaviermiller

une expression du genre /\(.mp3\)+/\1/

----------

## truc

en bash(pour la fonctionnalité 'process substitution'<(command), on peut le faire autrement, mais c'est moins joli.. :p):

```
while read line ; do mv -v  "$i" "${i//mp3.}" ; done < <(find music/ -name '*.mp3' )
```

ça devrait le faire, ça supprime toutes les chaines mp3. dans le noms et les chemins... donc, si t'as 'mp3.' dans tes chemins ça ne marchera pas si bien...

EDIT: ah oui, désolé, j'lai fait sans regex du coup :/

----------

## Bapt

en zsh 

```
zmv '(**)/(*).mp3' '$1/${2//.mp3*/}.mp3'
```

A la racine de ton rep ou tu as les mp3 et il va récursivement renommer tes fichiers mp3, pas besoin de regex.

----------

## Trevoke

Sauf qu'il ne connait pas zmv  :Sad: 

----------

## Bapt

autoload -U zmv

----------

## bob1977

En renommant tes fichiers par un logiciel autre qu'amarok, tu risques de perdre les données que amarok a associé à chacun d'eux comme la note que tu mets au morceau, les paroles, les labels... 

 Je ne suis pas sûr à 100% mais essaye avec un avant de tout renommer pour voir si tu perds des informations.

----------

## El_Goretto

Ya pas des outils comme rename(shell?)  ou krename(kde), pour éviter les migraines le week-end?

----------

## Pixys

le file manager Thunar permet de renommer facilement plusieurs fichiers d'un coup. Si tous tes fichiers on le même nombre de ".mp3" c'est assez facile...

----------

## Trevoke

Je me dois d'avouer que j'etais curieux et j'ai essaye la solution zsh.. Ben .. Elle n'a pas marche pour moi!

----------

## Bapt

La solution n'a pas marchée pour toi car j'ai fait une typo dans ma ligne : 

```
zmv '(**/)(*).mp3' '$1/${2//.mp3*/}.mp3' 
```

c'est mieux comme ça  :Smile:  désolé.

Pour un peu plus de détail : chaques choses entre () va devenir un $? ou ? va de 1 à n

**/ c'est un globbing qui veux dire dans tous les reps recursivement

donc $1 deviens le chemin ou le fichier mp3 a été trouvé

$2 correspond au (*) donc au nom de fichier dans la dernière extension ".mp3" 

${2//.mp3/} je remplace dans $2 tout le texte commençant par .mp3 et suivit de n'eimporte quoi par rien

j'obtiens donc un nom de fichier sans extensions auquel je rajoute l'extention .mp3

pour tester il est mossible de mettre un -n après zmv qui montera les commandes mv qui seront executées par zmv

----------

