Renommer fichiers en masse ligne de commande
Résolu
Abdenago
-
zipe31 Messages postés 38797 Statut Contributeur -
zipe31 Messages postés 38797 Statut Contributeur -
Bonjour à tous,
Voilà, je voudrais renommer 242 fichiers en ligne de commande. Les noms doivent etre des nombres consécutifs, si vous avez ça..
truc.zip ; machin.zip ; bidule.zip ===> 1.zip ; 2.zip ; 3.zip
Voilà, je voudrais renommer 242 fichiers en ligne de commande. Les noms doivent etre des nombres consécutifs, si vous avez ça..
truc.zip ; machin.zip ; bidule.zip ===> 1.zip ; 2.zip ; 3.zip
A voir également:
- Renommer fichiers en masse ligne de commande
- Renommer des fichiers en masse - Guide
- Invite de commande - Guide
- Partage de photos en ligne - Guide
- Mètre en ligne - Guide
- Formulaire en ligne de meta - Guide
8 réponses
J'ai trouvé :D
If you want to go quickly, go alone. If you want to go far, go together.
initials@alexis:~/test$ touch {toto,titi,tata,tutu}.txt
initials@alexis:~/test$ ls
tata.txt titi.txt toto.txt tutu.txt
initials@alexis:~/test$ j=0; for f in *.txt; do let j+=1; mv -v "$f" "$j.txt"; done
« tata.txt » -> « 1.txt »
« titi.txt » -> « 2.txt »
« toto.txt » -> « 3.txt »
« tutu.txt » -> « 4.txt »
initials@alexis:~/test$
If you want to go quickly, go alone. If you want to go far, go together.
$ tree
.
|-- fich1.zip
|-- fich2.zip
'-- rep
|-- fich3.zip
|-- fich4.zip
|-- rep1
| |-- sous-rep1
| | |-- fich5.zip
| | '-- fich6.zip
| '-- sous-rep2
| |-- fich5.zip
| '-- fich6.zip
'-- rep2
|-- sous-rep1
| |-- fich7.zip
| '-- fich8.zip
'-- sous-rep2
|-- fich7.zip
'-- fich8.zip
7 directories, 12 files
$ i=0; for file in $( find . -type f -name "*.zip"); do name=$(basename $file);rep=$(dirname $file); mv -v $rep/$name $rep/$i.zip;((i++)); done
'./fich2.zip' -> './0.zip'
'./fich1.zip' -> './1.zip'
'./rep/fich4.zip' -> './rep/2.zip'
'./rep/fich3.zip' -> './rep/3.zip'
'./rep/rep2/sous-rep2/fich8.zip' -> './rep/rep2/sous-rep2/4.zip'
'./rep/rep2/sous-rep2/fich7.zip' -> './rep/rep2/sous-rep2/5.zip'
'./rep/rep2/sous-rep1/fich8.zip' -> './rep/rep2/sous-rep1/6.zip'
'./rep/rep2/sous-rep1/fich7.zip' -> './rep/rep2/sous-rep1/7.zip'
'./rep/rep1/sous-rep2/fich6.zip' -> './rep/rep1/sous-rep2/8.zip'
'./rep/rep1/sous-rep2/fich5.zip' -> './rep/rep1/sous-rep2/9.zip'
'./rep/rep1/sous-rep1/fich6.zip' -> './rep/rep1/sous-rep1/10.zip'
'./rep/rep1/sous-rep1/fich5.zip' -> './rep/rep1/sous-rep1/11.zip'
$ tree
.
|-- 0.zip
|-- 1.zip
'-- rep
|-- 2.zip
|-- 3.zip
|-- rep1
| |-- sous-rep1
| | |-- 10.zip
| | '-- 11.zip
| '-- sous-rep2
| |-- 8.zip
| '-- 9.zip
'-- rep2
|-- sous-rep1
| |-- 6.zip
| '-- 7.zip
'-- sous-rep2
|-- 4.zip
'-- 5.zip
7 directories, 12 files
$
;-))
Pour plus de clarté dans le code...
i=0 ; for file in $( find . -type f -name "*.zip") ; do name=$(basename $file) ; rep=$(dirname $file) ; mv -v $rep/$name $rep/$i.zip ; ((i++)) ; done
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour/bonsoir,
Lis ce qui suit stp (in English) :
https://linux.byexamples.com/archives/135/rename-multiple-files/
https://www.thegeekstuff.com/2009/06/how-to-rename-files-in-group/
Lis ce qui suit stp (in English) :
https://linux.byexamples.com/archives/135/rename-multiple-files/
https://www.thegeekstuff.com/2009/06/how-to-rename-files-in-group/
Bonjour à TOUS,
Je n'ai pas eu accès à un internet pendant un certain temps, n'en déplaise à certain.
Merci à initials 76, j'ai pu bidouiller un peu avec ta méthode et j'ai réussi tant bien que mal! :-) Certains commentaires désobligeants sont à éviter je pense (zipe31) pour entretenir de bonnes relations..
Merci beaucoup! Résolu! :-)
Je n'ai pas eu accès à un internet pendant un certain temps, n'en déplaise à certain.
Merci à initials 76, j'ai pu bidouiller un peu avec ta méthode et j'ai réussi tant bien que mal! :-) Certains commentaires désobligeants sont à éviter je pense (zipe31) pour entretenir de bonnes relations..
Merci beaucoup! Résolu! :-)
HEELP!
Est il possible de faire un truc comme ça?
:)
merci
Est il possible de faire un truc comme ça?
find . -name '*.zip' | xargs j=0; for f in *.zip; do let j+=1; mv -v "$f" "$j.zip"; done
:)
merci
Je met un point virgule, ça tourne mais ça ne renomme que les fichiers présents dans le répertoire courant :/ et pas la totalité des fichiers trouvé par find :(
Le find marche hein!
mais quand je fais:
==> Il ne renomme que les fichiers du répertoire courant! je pense qu'il y a un problème avec 'exec'
find ./Bureau/essai -name '*.zip'==> je trouve tous les fichiers zip qui se trouvent dans le répertoire courant + ceux des sous répertoires.
mais quand je fais:
find ./Bureau/essai -name '*.zip' | exec; j=0; for f in *.zip; do let j+=1; mv -v "$f" "$j.zip"; done
==> Il ne renomme que les fichiers du répertoire courant! je pense qu'il y a un problème avec 'exec'
Apparemment non ;-(
Ça devait être du genre pressé qui veut du tout cuit ;-\