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?

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"' {} \;
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.