Je sais, c'est vraiment tout con.. je suis une sous merde..
Mais comment renommer l'extension de fichiers en bash ?
Mon script transforme les fichiers png en jpg mais du coup, le fichier s'appelle fichier.png.jpg (c pas joli)
(je fais un for i in *.png do convert $i $i.jpg )
Argh.. je suis nul...
# Re: Renommer un fichier en bash...
Posté par Obsidian . Évalué à 3.
Sinon il faut utiliser les motifs shell
${i##.png}.jpg
Regarde dans les astuces, elle est passée.
Sinon man bash marche bien aussi.
[^] # Re: Renommer un fichier en bash...
Posté par Obsidian . Évalué à 3.
https://linuxfr.org/tips/52.html(...)
[^] # Re: Renommer un fichier en bash...
Posté par ploum (site web personnel, Mastodon) . Évalué à 2.
Mes livres CC By-SA : https://ploum.net/livres.html
[^] # Re: Renommer un fichier en bash...
Posté par N-Mi . Évalué à 4.
rename 's/.png.jpg$/.jpg/' *
Le $ est important seulement si tu as des fichiers qui s'appellent toto.png.jpg.tata, car il indique la fin du nom (donc je pense que tu peux t'en passer).
Pour apprendre à utiliser rename, consulte n'importe quelle doc sur les expression régulières. Les expressions régulières (utilisées par rename ou sed entre autres) sont des outils qui une fois maîtrisés ont une puissance monstrueuses...
[^] # Re: Renommer un fichier en bash...
Posté par asailor . Évalué à 1.
Bof, je préfère celle que j'ai écrite en dessous, c'est plus simple et plus compréhensible pour un novice (donc plus compréhensible tout court).
rename .png .jpg *.png
C'est marrant que tu proposes ça comme solution car le man dit :
rename from to file
[^] # Re: Renommer un fichier en bash...
Posté par M . Évalué à 1.
[^] # Re: Renommer un fichier en bash...
Posté par asailor . Évalué à 1.
Ça serait pas une commande perl ton rename ?
;)
[^] # Re: Renommer un fichier en bash...
Posté par asailor . Évalué à 4.
rename 'motif à remplacer' 'motif remplaçant' 'fichiers'
exemple :
rename png jpg *.png
Attention à ce que le 'motif à remplacer' n'apparaisse pas dans le nom du fichier, sinon :
rename .png .jpg *.png
Pour ce qui est du bash :
${VAR%<motif à retirer>} = retirer une fois depuis la fin
${VAR%%<motif à retirer>} = retirer autant de fois que possible depuis la fin
${VAR#<motif à retirer>} = retirer une fois depuis le début
${VAR##<motif à retirer>} = retirer autant de fois que possible depuis le début
C'est très utile pour retirer les chemins et les extension, retirer tous les chemins (tu peux aussi utiliser basename) :
${VAR##*/}
Retirer toutes les extensions :
${VAR%%.*}
Tu peux bien sûr concaténer directement comme cela à été montré par Obsidian.
C'est valable pour zsh aussi.
[^] # Re: Renommer un fichier en bash...
Posté par asailor . Évalué à 1.
# Re: Renommer un fichier en bash...
Posté par Bruno (site web personnel) . Évalué à 6.
[^] # Re: Renommer un fichier en bash...
Posté par Jak . Évalué à 1.
[^] # Re: Renommer un fichier en bash...
Posté par Romuald Delavergne . Évalué à 1.
[^] # Re: Renommer un fichier en bash...
Posté par Jak . Évalué à 1.
[^] # Re: Renommer un fichier en bash...
Posté par youri_b . Évalué à 0.
je vais sous windows et je fais: ren *.wav *.au
TOUS SIMPLEMENT HAHAHAHAHA
nan je deconne, je n ai pas windows, mais quand je l avais c est ce que je faisais. Je ne sais pas si cela existe encore sous XP.
[^] # Re: Renommer un fichier en bash...
Posté par Romuald Delavergne . Évalué à 2.
Même si cela paraît bien pratique, cela reste une grosse bidouille dans l'utilisation des jockers. Comment voulez-vous avoir un système fiable avec des astuces de la sorte.
# Re: Renommer un fichier en bash...
Posté par Fabimaru (site web personnel) . Évalué à 4.
Fais gaffe, fais plutôt:
for i in *.png do convert "$i" "$i.jpg"
Car si tu as "un photo bidon.jpg" ça ne marche pas.
[^] # Re: Renommer un fichier en bash...
Posté par cedric . Évalué à 3.
for i in *.png; do convert "$i" "${i/\.png/\.jpg}"; done
# Re: Renommer un fichier en bash...
Posté par cozon (site web personnel) . Évalué à 2.
http://packages.debian.org/unstable/utils/mmv.html(...)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.