Menghilangkan ekstensi dengan find?

11

Saya perlu membuat thumbnail dari beberapa file .png dan ingin melakukan ini menggunakan convertutilitas ImageMagicks . Untuk secara rekursif menemukan semua file yang bukan thumbnail sendiri, saya menggunakan panggilan berikut (dibagi menjadi dua baris agar dapat dibaca):

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

Tetapi ini tentu saja akan membuat file bernama a.png.thumb.pngketika menjalankannya pada file yang disebut a.png. Bagaimana saya bisa menghapus .pngekstensi dari {}parameter kedua yang dilewatkan untuk dikonversi?

Marcus Riemer
sumber

Jawaban:

14

Cara termudah untuk melakukannya adalah dengan mengirimkannya {}ke shell seperti shdan minta shell melakukannya:

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