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!

Jawaban:


20

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

for file in *.MOV; do ffmpeg2theora "$file"; done

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


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
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.