Di terminal, bagaimana saya bisa mengulangi perintah beberapa kali pada file yang berbeda?

13

Di terminal, saya ingin menggunakan ffmpeg2theora untuk mengkonversi semua file .MOV dalam direktori tertentu ke file .ogv. Namun, yang berikut ini tidak berfungsi:

ffmpeg2theora *.MOV

Apakah ada cara yang baik untuk mengulangi perintah beberapa kali pada file yang berbeda?

Terima kasih!

Alan C
sumber

Jawaban:

20

Jika Anda menggunakan shell default (bash), Anda dapat menggunakan yang berikut:

for file in *.MOV; do ffmpeg2theora "$file"; done
Marcel Stimberg
sumber
5
Ini lebih mungkin untuk bekerja tanpa garis miring:for file in *.[Mm][Oo][Vv]; do ffmpeg2theora "$file"; done
frabjous
ya, Anda memang benar, saya mengoreksi jawaban saya.
Marcel Stimberg
1
Anda juga dapat mengatur nocaseglobopsi bash untuk mencocokkan ekstensi huruf besar-kecil, huruf besar.
enzotib
Terima kasih! Saya belum pernah menggunakan bash sebelumnya tetapi terlihat sangat berguna. (Saatnya saya pergi belajar!)
Alan C
11

find . -iname '*.mov' -exec ffmpeg2theora '{}' \;

Untuk membatasi kedalaman rekursi, Anda dapat menambahkan -maxdepth 1sebelumnya-exec

Michał Šrajer
sumber
2
Hanya untuk menyatakan perbedaan antara jawaban ini dan jawaban saya: Menggunakan find juga akan mencari file dalam subdirektori, for file in *.MOVsolusinya hanya akan mencari di direktori saat ini.
Marcel Stimberg