# [bash] Script pour convertir tif/jpg recursivement

## Ascodas

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 :

```
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 :

```
find . -name "*.tif" -exec sh -c 'printf "%s\n" "${0%.*}"' {} ';'
```

Autre piste explorée le for :

```
 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.

----------

## fedeliallalinea

Une solution possible avec find

```
$ find . -type f -iname "*.tif" -exec sh -c 'filename="{}"; convert ${filename} ${filename/.tif/}.jpg' \;
```

----------

## Ascodas

Oh merci beaucoup fedeliallalinea !

Résolu. Thomas.

----------

## Magic Banana

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 :

```
#/bin/sh

convert "$1" "${1%.*}.jpg"
```

2. Rends-le exécutable (je suppose qu’il est dans /usr/local/bin) :

```
$ 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) :

```
$ find . -type f -iname '*.tif' -exec img2jpg '{}' \;
```

----------

## Ascodas

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.

----------

