Renommer plusieurs fichiers en bash
Résolu
Jeremyprog
-
Jeremyprog -
Jeremyprog -
Bonjour,
J'ai un dossier qui contient plusieurs fichiers texte.
Je voulais renommer les fichiers en
Je pense avec
Merci de votre aide :)
J'ai un dossier qui contient plusieurs fichiers texte.
popo.txt
lulu.txt
titi.txt
Je voulais renommer les fichiers en
doc1.txt
doc2.txt
doc3.txt
Je pense avec
renameet une boucle mais je n'arrive pas à la structurer
Merci de votre aide :)
3 réponses
-
Bonjour,
Il faut itérer sur les fichiers de ton dossier en récupérant le résultat de la commandefind
. Au cours de cette itération, tu incrémentes un compteur qui te permettra de construire le nom des fichiers cibles. Puis tu fais le renommage avecrename
oumv
.
Le mieux est d'écrire un petit script (e.g.script.sh
)
#!/bin/bash i=0 for f in $(find $1 | grep "txt$"); do dir=$(dirname "$f") mv "$f" "$dir/doc$i.txt" i=$(($i+1)) done
On sauve, on quitte et depuis un terminal, on rend le script exécutable, et on prépare un petit test :chmod a+x script.sh mkdir -p toto touch toto/popo.txt toto/lulu.txt toto/titi.txt
... et on lance le script :
(mando@silk) (~) $ ls toto/
lulu.txt popo.txt titi.txt
(mando@silk) (~) $ ./script.sh toto/
(mando@silk) (~) $ ls toto/
doc0.txt doc1.txt doc2.txt
Bonne chance -
hello
enlever le -n si c'est ok$ rename -n 's/.+/our $i; sprintf("doc%d.txt", 1+$i++)/e' *.txt
rename(lulu.txt, doc1.txt)
rename(popo.txt, doc2.txt)
rename(titi.txt, doc3.txt) -
Très intéressant en une seule ligne de commande Merci beaucoup ca fonctionne parfaitement :)