Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[bash] Script pour convertir tif/jpg recursivement
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
Ascodas
Apprentice
Apprentice


Joined: 18 Nov 2004
Posts: 263

PostPosted: Tue Feb 06, 2018 9:15 am    Post subject: [bash] Script pour convertir tif/jpg recursivement Reply with quote

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
View user's profile Send private message
fedeliallalinea
Administrator
Administrator


Joined: 08 Mar 2003
Posts: 30822
Location: here

PostPosted: Tue Feb 06, 2018 10:23 am    Post subject: Reply with quote

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
View user's profile Send private message
Ascodas
Apprentice
Apprentice


Joined: 18 Nov 2004
Posts: 263

PostPosted: Tue Feb 06, 2018 10:55 am    Post subject: Reply with quote

Oh merci beaucoup fedeliallalinea !

Résolu. Thomas.
Back to top
View user's profile Send private message
Magic Banana
Veteran
Veteran


Joined: 13 Dec 2005
Posts: 1912
Location: Belo Horizonte, Minas Gerais, Brasil

PostPosted: Tue Feb 06, 2018 11:43 am    Post subject: Reply with quote

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
View user's profile Send private message
Ascodas
Apprentice
Apprentice


Joined: 18 Nov 2004
Posts: 263

PostPosted: Tue Feb 06, 2018 1:18 pm    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum