Як в терміналі я можу повторити команду кілька разів на різних файлах?


13

У терміналі я хочу використовувати ffmpeg2theora для перетворення всіх .MOV-файлів у певному каталозі у .ogv-файли. Однак наступне не працює:

ffmpeg2theora *.MOV

Чи є хороший спосіб повторити команду кілька разів у різних файлах?

Спасибі!

Відповіді:


20

Якщо ви використовуєте оболонку за замовчуванням (bash), ви можете використовувати наступне:

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

5
Це, швидше за все, спрацює без for file in *.[Mm][Oo][Vv]; do ffmpeg2theora "$file"; done
нахилів

так, ви абсолютно праві, я виправив свою відповідь.
Марсель Стімберг

1
Ви також можете встановити nocaseglobопцію bash для відповідності розширень файлів із великим регістром у верхньому регістрі та змішаним регістром.
enzotib

Дякую! Я ніколи раніше не використовував bash, але це виглядає дуже корисно. (Час мені піти вчитися!)
Алан C

11

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

Щоб обмежити глибину рекурсії, ви можете додати її -maxdepth 1раніше-exec


2
Тільки щоб вказати різницю між цією відповіддю та моєю відповіддю: Використовуючи find, також буде шукати файли у підкаталогах, for file in *.MOVрішення буде шукатись лише у поточному каталозі.
Марсель Стімберг
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.