View previous topic :: View next topic |
Author |
Message |
Ascodas Apprentice
Joined: 18 Nov 2004 Posts: 263
|
Posted: Tue Feb 06, 2018 9:15 am Post subject: [bash] Script pour convertir tif/jpg recursivement |
|
|
Bonjour, un bail que j'ai pas posté ici, néanmoins toujours sous gentoo.
Je voudrais faire un script qui converti du tif en jpg avec imagemajick mais récursivement dans une arborescence.
j'ai fait plusieurs tentatives avec d'abord find/exec/basename :
Code: | find . -type f -iname "*.tif" -exec convert {} `basename {} .tif`.jpg \; |
Le problème c'est que ca marche mais ca me transfomre des blabla.tif en blabla.tif.jpg, le basename ne fonctionne pas comme je voudrais ...
La commande suivante me permettrai de m'affranchir de basename mais j'arrive pas à coupler les deux commandes :
Code: | find . -name "*.tif" -exec sh -c 'printf "%s\n" "${0%.*}"' {} ';' |
Autre piste explorée le for :
Code: | for f in $(find -name *.tif); do convert "$f" "$(basename "$f" .tif).jpg"; done; |
Ca marche presque mais je perds la récursivité, tous les fichiers se mettent dans le répertoire courant...
Si vous avez une astuce pour me débloquer je suis preneur, en vous remerciant,
Thomas. |
|
Back to top |
|
|
fedeliallalinea Administrator
Joined: 08 Mar 2003 Posts: 31387 Location: here
|
Posted: Tue Feb 06, 2018 10:23 am Post subject: |
|
|
Une solution possible avec find
Code: | $ find . -type f -iname "*.tif" -exec sh -c 'filename="{}"; convert ${filename} ${filename/.tif/}.jpg' \; |
_________________ Questions are guaranteed in life; Answers aren't. |
|
Back to top |
|
|
Ascodas Apprentice
Joined: 18 Nov 2004 Posts: 263
|
Posted: Tue Feb 06, 2018 10:55 am Post subject: |
|
|
Oh merci beaucoup fedeliallalinea !
Résolu. Thomas. |
|
Back to top |
|
|
Magic Banana Veteran
Joined: 13 Dec 2005 Posts: 1912 Location: Belo Horizonte, Minas Gerais, Brasil
|
Posted: Tue Feb 06, 2018 11:43 am Post subject: |
|
|
La même solution que fedeliallalinea mais peut-être plus « jolie » (surtout si, d’aventure, tu veux quelque chose de plus compliqué qu’un simple 'convert') :
1. Crée quelque part (par exemple dans /usr/local/bin) un script « img2jpg » qui convertit une seule image (en argument, "$1"), dans n’importe quel format (ainsi tu peux ensuite 'find' plusieurs types d’images), en JPEG :
Code: | #/bin/sh
convert "$1" "${1%.*}.jpg" |
2. Rends-le exécutable (je suppose qu’il est dans /usr/local/bin) :
Code: | $ chmod +x /usr/local/bin/img2jpg |
3. Exécute (je suppose que "img2jpg" est dans un répertoire de la variable PATH, comme typiquement /usr/local/bin) :
Code: | $ find . -type f -iname '*.tif' -exec img2jpg '{}' \; |
|
|
Back to top |
|
|
Ascodas Apprentice
Joined: 18 Nov 2004 Posts: 263
|
Posted: Tue Feb 06, 2018 1:18 pm Post subject: |
|
|
En effet pas mal du tout, super réactivité du forum !
Merci Magic Banana.
Je vais peut-être avoir encore besoin d'aide pour un une substitution d'une chaîne de caractères(tif) par une autre(jpg) dans un fichier texte et bien sur récursivement. (en l'occurrence des *.xmp générés par Darktable) mais je créerai un nouveau post pour cela.
Thomas. |
|
Back to top |
|
|
|