Omettere l'estensione con find?


11

Devo creare miniature da più file .png e vorrei farlo usando l' convertutilità ImageMagicks . Per trovare ricorsivamente tutti i file che non sono miniature stesse, sto usando la seguente chiamata (divisa in due righe per renderla leggibile):

find . -type f -name "*.png" -not -name "*thumb.png*" \
  -exec convert {} -thumbnail 200x200 {}.thumb.png \;`

Ma questo ovviamente creerebbe un file chiamato a.png.thumb.pngquando lo si esegue su un file chiamato a.png. Come posso rimuovere l' .pngestensione dal secondo {}parametro passato per convertire?

Risposte:


14

Il modo più semplice per farlo è passare il {}via a una shell come she fare in modo che la shell lo faccia:

find ... \
    -exec sh -c 'convert "$0" -thumbnail 200x200 "${0%.png}.thumb.png"' {} \;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.