В терминале, как я могу повторить команду несколько раз для разных файлов?


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 для соответствия расширениям в нижнем, верхнем и смешанном регистре.
энзотиб

Спасибо! Я никогда раньше не использовал bash, но это выглядит действительно полезным. (Пора мне учиться!)
Alan 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.