# Comment renommer des fichiers

**URL:** <https://www.debian-fr.org/t/comment-renommer-des-fichiers/21007>\
**Category:** Programmation\
**Created:** [Février 20, 2016, 8:21 UTC](https://www.debian-fr.org/t/comment-renommer-des-fichiers/21007 "2016-02-20T20:21:48Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![jcvittet](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/j/ecae2f/32.png) [@jcvittet](https://www.debian-fr.org/u/jcvittet)\
**Post date:** [Février 20, 2016, 8:21 UTC](https://www.debian-fr.org/t/comment-renommer-des-fichiers/21007/1 "2016-02-20T20:21:48Z")

</div>

Y a bien un balaise qui va me trouver ça …

Je veux faire un nautilus-script sur une base:  
for arg  
do  
renomme les fichiers du répertoire en leur donnant le nom du répertoire incrémenté de 1  
done

Ca se peut ?

Merci

---

<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 20, 2016, 8:21 UTC](https://www.debian-fr.org/t/comment-renommer-des-fichiers/21007/2 "2016-02-20T20:21:54Z")

</div>

Je regarde quel langage c’est et comment ça s’intègre à nautilus et je te dis.

---

<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 20, 2016, 8:21 UTC](https://www.debian-fr.org/t/comment-renommer-des-fichiers/21007/3 "2016-02-20T20:21:54Z")

</div>

D’après le site d’ubuntu il ne faut pas utiliser les arguments du script mais la variable d’environnement $NAUTILUS\_SCRIPT\_SELECTED\_FILE\_PATHS :

[code]

# Ce qui sépare les éléments de la liste dans la variable

# c’est un retour à la ligne et surtout pas un espace

IFS=’  
'  
i=1

for $file in $NAUTILUS\_SCRIPT\_SELECTED\_FILE\_PATHS  
do

# Je viens de voir que les regexp de bash sont pas

# aussi bien faites qu’en sed donc on va passer par sed

dest=$(echo $file | sed -e ‘s//([^/]_)/[^/]_$//\1/\1/’)  
mv $file $dest$i  
((++i))  
done[/code]

---

<div class="post-metadata">

**Author:** ![jcvittet](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/j/ecae2f/32.png) [@jcvittet](https://www.debian-fr.org/u/jcvittet)\
**Post date:** [Février 20, 2016, 8:22 UTC](https://www.debian-fr.org/t/comment-renommer-des-fichiers/21007/4 "2016-02-20T20:22:03Z")

</div>

Salut,  
Merci de m’avoir envoyé ces commandes.  
Ca ne marche pas, quand je lance le script sur le répertoire pour renommer les fichiers contenus dans ce répertoire mais les commandes me permettront une base pour j’espère trouver  
Pas trop le temps en ce moment.  
Bonne journée

---

<div class="post-metadata">

**Author:** ![jcvittet](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/j/ecae2f/32.png) [@jcvittet](https://www.debian-fr.org/u/jcvittet)\
**Post date:** [Février 20, 2016, 8:23 UTC](https://www.debian-fr.org/t/comment-renommer-des-fichiers/21007/5 "2016-02-20T20:23:00Z")

</div>

Je me suis penché sur la question, ça vaut ce que ça vaut (autodidacte)  
Le but est de renommer les fichiers contenus dans un répertoire en leur donnant le nom du répertoire incrémenté de un. Le nautilus-script donc:  
##########################################  
#!/bin/bash  
for arg  
do  
i=0  
for file in `ls "$arg"/`  
do  
i=$(($i+1))   
cd “$arg”/  
ext=`ls $file | cat | cut -d. -f2`  
mv $file “$arg”-"$i".$ext  
done  
done  
#########################################  
Vos commentaires ?  
Merci à ceux qui m’on orientés

---

<div class="post-metadata">

**Author:** ![jcvittet](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/j/ecae2f/32.png) [@jcvittet](https://www.debian-fr.org/u/jcvittet)\
**Post date:** [Février 20, 2016, 8:23 UTC](https://www.debian-fr.org/t/comment-renommer-des-fichiers/21007/6 "2016-02-20T20:23:11Z")

</div>

Avec cd -  
en fin de script, on peut executer sur plusieurs répertoires  
##########################################  
#!/bin/bash  
for arg  
do  
i=0  
for file in `ls "$arg"/`  
do  
i=$(($i+1))  
cd “$arg”/  
ext=`ls $file | cat | cut -d. -f2`  
mv $file “$arg”-"$i".$ext  
cd -  
done  
done  
#########################################
