Terminalde, bir komutu farklı dosyalarda nasıl birden çok kez tekrarlayabilirim?


13

Terminalde, belirli bir dizindeki tüm .MOV dosyalarını .ogv dosyalarına dönüştürmek için ffmpeg2theora kullanmak istiyorum. Ancak, aşağıdakiler çalışmaz:

ffmpeg2theora *.MOV

Komutu farklı dosyalarda birden çok kez tekrarlamanın iyi bir yolu var mı?

Teşekkürler!

Yanıtlar:


20

Varsayılan kabuğu (bash) kullanırsanız, aşağıdakileri kullanabilirsiniz:

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

5
Bunun eğik çizgiler olmadan çalışması daha olasıdır:for file in *.[Mm][Oo][Vv]; do ffmpeg2theora "$file"; done
15'te frajjous

evet, kesinlikle haklısın, cevabımı düzelttim.
Marcel Stimberg

1
Ayrıca nocaseglobbash seçeneğini küçük harf, büyük harf karışık dosya uzantılarıyla eşleşecek şekilde ayarlayabilirsiniz .
enzotib

Teşekkür ederim! Daha önce hiç bash kullanmadım ama gerçekten kullanışlı görünüyor. (Öğrenmem için zaman!)
Alan C

11

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

Özyineleme derinliğini sınırlamak için -maxdepth 1önce ekleyebilirsiniz-exec


2
Sadece bu cevap ile cevabım arasındaki farkı belirtmek için: find komutunu kullanarak alt dizinlerdeki dosyaları da arayacaksınız, for file in *.MOVçözüm sadece geçerli dizine bakacaktır.
Marcel Stimberg
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.