# Renommer des fichiers

**URL:** <https://www.debian-fr.org/t/renommer-des-fichiers/55867>\
**Category:** Programmation\
**Created:** [Février 21, 2016, 1:52 UTC](https://www.debian-fr.org/t/renommer-des-fichiers/55867 "2016-02-21T13:52:11Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![jarlax](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/j/eb8c5e/32.png) [@jarlax](https://www.debian-fr.org/u/jarlax)\
**Post date:** [Février 21, 2016, 1:52 UTC](https://www.debian-fr.org/t/renommer-des-fichiers/55867/1 "2016-02-21T13:52:11Z")

</div>

Salut à tous,

Pour le taf, je dois renommer une série de fichiers en retirant une partie du nom qui est une série de caractères alphanumériques à valeurs variables :

transformer ceci :

`fichier1_665bc99d7e39f2899b92f10df001a1c2.csv 
fichier2_2b6c6452652761d3e20ed969e46effd0.csv
etc.`en cela :`fichier1.csv
fichier2.csv
etc.`

j’ai essayé `rename 's/_*.csv//g' *.csv
ls | xargs -t -i mv {}.fichiers_*.flv {}.flv`  
Mais c’est pas ça.  
si vous avez une idée…  
(je n’ai pas une grande connaissance en prog)

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 1:52 UTC](https://www.debian-fr.org/t/renommer-des-fichiers/55867/2 "2016-02-21T13:52:12Z")

</div>

Désolé mais ta question n’est pas vraiment claire. Donne nous un ou deux exemples de paires (nom d’origine / résultat souhaité). En l’occurrence c’est le résultat souhaité qui n’est pas clair du tout. 😉

---

<div class="post-metadata">

**Author:** ![jarlax](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/j/eb8c5e/32.png) [@jarlax](https://www.debian-fr.org/u/jarlax)\
**Post date:** [Février 21, 2016, 1:52 UTC](https://www.debian-fr.org/t/renommer-des-fichiers/55867/3 "2016-02-21T13:52:12Z")

</div>

ah ! oups désolé ! j’édite le post pour plus de clarté

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 1:52 UTC](https://www.debian-fr.org/t/renommer-des-fichiers/55867/4 "2016-02-21T13:52:12Z")

</div>

`for FILE in *.csv; do
  mv -n "$FILE" "$(echo "$FILE" | sed 's@_.*\.csv$@.csv@g')"
done`  
Je n’ai pas testé donc à prendre avec des pincettes (fais une copie de tes fichiers avant, au cas où). Enfin ça devrait quand même marcher du premier coup, sauf grosse erreur de ma part.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 1:52 UTC](https://www.debian-fr.org/t/renommer-des-fichiers/55867/5 "2016-02-21T13:52:12Z")

</div>

Vite fais je vois ça :

```auto

```

ou ça (en bash) :

`for fichier in *.csv ; do
    mv "${fichier}" "${fichier//_*./.}"
done`

ou en ça (en zsh) :

```auto

```

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 1:52 UTC](https://www.debian-fr.org/t/renommer-des-fichiers/55867/6 "2016-02-21T13:52:12Z")

</div>

[quote=“MisterFreez”]ou ça (en bash) :

`for fichier in *.csv ; do
    mv "${fichier}" "${fichier//_*./.}"
done`[/quote]  
Cochonnerie de “bashismes”, j’ai vraiment du mal à m’y faire… 😒  
M’enfin (juste histoire de critiquer) t’as quand même oublié l’option -n de mv qui empêche d’écraser les fichiers. ![:teasing-neener:](https://www.debian-fr.org/uploads/default/original/1X/e0ae327c77962ce0f95cc00254f0ad555183a065.gif "Neener Neener") J’ai eu suffisamment de soucis avec les renommages en lot pour ne plus jamais oublier cette option. 😉

---

<div class="post-metadata">

**Author:** ![jarlax](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/j/eb8c5e/32.png) [@jarlax](https://www.debian-fr.org/u/jarlax)\
**Post date:** [Février 21, 2016, 1:52 UTC](https://www.debian-fr.org/t/renommer-des-fichiers/55867/7 "2016-02-21T13:52:13Z")

</div>

j’ai essayé ceci donc `for fichier in *.csv ; do
    mv "${fichier}" "${fichier//_*./.}"
done`  
mais ça m’a gatouillé les fichiers : certains n’ont pas été modifiés (ont toujours la suite alphanumérique, d’autres ont étés tronçonnés, ex :

```auto

```

devenu :

`resource.csv
10.csv
satelite.csv`  
et comme je suis trop fatigué, je n’ai pas fait le backup que je croyais avoir fait il y a 5mn ! Donc je n’ai pas pu essayer les autres propositions. Je dois passer demain au taf re-récupérer ces fichiers. Bigre de moi de tête en l’air ! ^^  
bon ben bonne nuit ! et j’y reviens

---

<div class="post-metadata">

**Author:** ![syam](https://www.debian-fr.org/user_avatar/www.debian-fr.org/syam/32/2951_2.png) [@syam](https://www.debian-fr.org/u/syam)\
**Post date:** [Février 21, 2016, 1:52 UTC](https://www.debian-fr.org/t/renommer-des-fichiers/55867/8 "2016-02-21T13:52:13Z")

</div>

Ah, il y peut y avoir plusieurs underscores dans le nom ? Ça n’était pas du tout spécifié dans la question d’origine… 😉  
Du coup ça devrait être bon (toujours pas testé) :

`for FILE in *.csv; do
  mv -n "$FILE" "$(echo "$FILE" | sed 's@_[^_]*\.csv$@.csv@g')"
done`

> [@jarlax](#):
>
> je n’ai pas fait le backup

C’est pas faute de te l’avoir dit… ![:teasing-neener:](https://www.debian-fr.org/uploads/default/original/1X/e0ae327c77962ce0f95cc00254f0ad555183a065.gif "Neener Neener")

---

<div class="post-metadata">

**Author:** ![jarlax](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/j/eb8c5e/32.png) [@jarlax](https://www.debian-fr.org/u/jarlax)\
**Post date:** [Février 21, 2016, 1:52 UTC](https://www.debian-fr.org/t/renommer-des-fichiers/55867/9 "2016-02-21T13:52:14Z")

</div>

> [@](#):
>
> C’est pas faute de te l’avoir dit… ![:teasing-neener:](https://www.debian-fr.org/uploads/default/original/1X/e0ae327c77962ce0f95cc00254f0ad555183a065.gif "Neener Neener")

Pour ma défense, j’avais fait un backup, mais trop fatigué, donc chuis pas sûr de ce que j’ai fait en fait. ![:snooty:](https://www.debian-fr.org/uploads/default/original/1X/7733f25880e690d75c39aa9a7c7798ed563873e1.gif "Snooty") et là au bureau, le technicien de garde s’est aussi moqué de moi ![:clap:](https://www.debian-fr.org/uploads/default/original/1X/dcfd4d2428519214f79b4b87bcebcb3197047574.gif "Clap") 😊

Bon, ta technique a marché, sauf pour un fichier qui ressemble à ça :

```auto
Instruction_remote_sensing_cjk-kr_ff729863645fdc3ea0dbaeca09dadd18.csv
```

qui n’a pas été modifié.

---

<div class="post-metadata">

**Author:** ![MisterFreez](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/m/bb73d2/32.png) [@MisterFreez](https://www.debian-fr.org/u/MisterFreez)\
**Post date:** [Février 21, 2016, 1:52 UTC](https://www.debian-fr.org/t/renommer-des-fichiers/55867/10 "2016-02-21T13:52:23Z")

</div>

[quote=«&nbsp;syam&nbsp;»][quote=«&nbsp;MisterFreez&nbsp;»]ou ça (en bash) :

`for fichier in *.csv ; do
    mv "${fichier}" "${fichier//_*./.}"
done`[/quote]  
Cochonnerie de «&nbsp;bashismes&nbsp;», j’ai vraiment du mal à m’y faire… 😒 [/quote]  
Elle est lisible celle-là.

> [@](#):
>
> M’enfin (juste histoire de critiquer) t’as quand même oublié l’option -n de mv qui empêche d’écraser les fichiers. ![:teasing-neener:](https://www.debian-fr.org/uploads/default/original/1X/e0ae327c77962ce0f95cc00254f0ad555183a065.gif "Neener Neener") J’ai eu suffisamment de soucis avec les renommages en lot pour ne plus jamais oublier cette option. 😉

Jamais utilisé, j’ai l’habitude de tester mes commandes sur des jeux de tests avant de les utiliser. Là pour le coup pour corriger mon exemple bash :

`for fichier in *.csv ; do
    mv "${fichier}" "${fichier/_*([^_])./.}"
done`

Je me sert des bashismes et autres zshisme parce que ce genre de choses moi je m’en sert en CLI directement (pas par script). Ensuite pour mes script, si c’est pour moi c’est en zsh, si c’est pour le boulot je sais que le client a bash 4 du coup je me sers de bash sinon je passe au bourne shell, mais alors je fais très gaffe à lire la section 1posix des manpages.
