GNU/Linux >> Belajar Linux >  >> Linux

Menghilangkan Ekstensi Dengan Temukan?

Saya perlu membuat thumbnail dari beberapa file .png dan ingin melakukannya menggunakan ImageMagicks convert kegunaan. Untuk menemukan semua file yang bukan thumbnail itu sendiri secara rekursif, 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 ;`

Tapi ini tentu saja akan membuat file bernama a.png.thumb.png saat menjalankannya pada file bernama a.png . Bagaimana cara menghapus .png ekstensi dari {} second kedua parameter yang diteruskan untuk dikonversi?

Jawaban yang Diterima:

Cara termudah untuk melakukannya adalah dengan meneruskan {} ke shell seperti sh dan minta shell melakukannya:

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

Linux
  1. Cara mengaudit izin dengan perintah find

  2. Temukan File dengan Perintah Temukan dan Temukan di Linux

  3. Linux menghapus file dengan ukuran 0

  1. Ganti find dengan fd di Linux

  2. Bagaimana menemukan semua file dengan direktori induk tertentu di linux?

  3. temukan file dengan set ACL

  1. Cara Menemukan File dengan Perintah fd di Linux

  2. Temukan file dan tar (dengan spasi)

  3. Secara rekursif menemukan file dengan ekstensi tertentu