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"' {} ;