Beroperasi pada file input wildcard dan menyimpan output sebagai <input> + akhiran

1

Saya ingin mengolah daftar file input wildcard saya dan kemudian output kemudian ke nama file input dengan akhiran ditambahkan. Saya berharap untuk memahami kasus umum ini.

Secara khusus, saya sedang berlari

    convert * .jpg -ukuran 800x600 ... * -resized.jpeg

Di bawah Fedora21 dengan ImageMagick 6.6.8 bagus karena menambahkan akhiran angka tetapi saya mencari untuk melestarikan nama file asli dan menambahkan akhiran. yaitu output * -resized-0.jpeg * -resized-1.jpeg ...

Dicentang ini tampaknya tidak berlaku, Banyak file input dan file output dalam awk

edit: Apakah ini mungkin atau apakah saya perlu menulis skrip?

StackAbstraction
sumber

Jawaban:

2

Itu tergantung pada bagaimana Anda mendefinisikan kata "skrip". Bisa dibilang, ini adalah skrip:

for f in *.jpg
do
    convert "$f" -resize 800x600 ... "${f%.*}"-resized.jpeg
done

tetapi Anda bisa mengetiknya seperti itu di terminal Anda. Perintah (atau sejumlah perintah) antara dodan done get (s) dieksekusi satu kali untuk setiap file yang cocok *.jpg, dengan $fset ke setiap nama file.  ${f%.*}adalah bentuk ekspansi parameter yang menghapus ekstensi nama file (pencocokan string .*) dari ujung (yaitu, sisi kanan) dari $fnama file.

Memberi nama pada file output .jpegsebagai ganti .jpgadalah ide yang bagus, untuk mencegah *.jpgwildcard mencocokkannya. Pendekatan lain adalah menulis file output ke direktori yang berbeda.

Scott
sumber
Jika ada orang yang membaca ini ingin melakukan ini dengan solusi satu liner, cukup tambahkan semi-kolom seperti: for f in *.jpg; do convert "$f" -resize 800x600 ... "${f%.*}"-resized.jpeg; done
Eric Martin