Omettre l'extension avec find?

11

J'ai besoin de créer des miniatures à partir de plusieurs fichiers .png et je voudrais le faire en utilisant l' convertutilitaire ImageMagicks . Pour trouver récursivement tous les fichiers qui ne sont pas eux-mêmes des miniatures, j'utilise l'appel suivant (divisé 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.pnglors de son exécution sur un fichier appelé a.png. Comment pourrais-je supprimer l' .pngextension du deuxième {}paramètre transmis pour la conversion?

Marcus Riemer
la source

Réponses:

14

La façon la plus simple de le faire est de passer le {}off à un shell comme shet de le faire faire:

find ... \
    -exec sh -c 'convert "$0" -thumbnail 200x200 "${0%.png}.thumb.png"' {} \;
jw013
la source