J'ai besoin de créer des vignettes à partir de plusieurs fichiers .png et j'aimerais le faire en utilisant ImageMagicks convert utilitaire. Pour trouver de manière récursive tous les fichiers qui ne sont pas eux-mêmes des vignettes, j'utilise l'appel suivant (scindé en deux lignes pour le rendre lisible) :
find . -type f -name "*.png" -not -name "*thumb.png*"
-exec convert {} -thumbnail 200x200 {}.thumb.png ;`
Mais cela créerait bien sûr un fichier nommé a.png.thumb.png lors de son exécution sur un fichier appelé a.png . Comment puis-je supprimer le .png extension à partir du deuxième {} paramètre passé à convertir ?
Réponse acceptée :
La façon la plus simple de le faire est de passer le {} vers un shell comme sh et que le shell le fasse :
find ...
-exec sh -c 'convert "$0" -thumbnail 200x200 "${0%.png}.thumb.png"' {} ;