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

В терминале я хочу использовать ffmpeg2theora для преобразования всех файлов .MOV в определенную директорию в .ogv-файлы. Тем не менее, следующее не работает:

ffmpeg2theora *.MOV

Есть ли способ повторить команду несколько раз в разных файлах?

Спасибо!

13
задан 7 August 2011 в 20:06

16 ответов

Если вы используете оболочку по умолчанию (bash), вы можете использовать следующее:

for file in *.MOV; do ffmpeg2theora "$file"; done
20
ответ дан 25 May 2018 в 19:27
  • 1
    Это, скорее всего, будет работать без косых черт: for file in *.[Mm][Oo][Vv]; do ffmpeg2theora "$file"; done – frabjous 7 August 2011 в 20:17
  • 2
    да, вы абсолютно правы, я исправил свой ответ. – Marcel Stimberg 7 August 2011 в 20:24
  • 3
    Вы также можете установить опцию nocaseglob bash для соответствия строчным расширением файлов в нижнем регистре, в верхнем регистре. – enzotib 7 August 2011 в 22:29
  • 4
    Спасибо! Я никогда раньше не использовал bash, но он выглядел действительно полезным. (Пора мне учиться!) – Alan C 8 August 2011 в 20:16

Если вы используете оболочку по умолчанию (bash), вы можете использовать следующее:

for file in *.MOV; do ffmpeg2theora "$file"; done
20
ответ дан 25 July 2018 в 21:29

Если вы используете оболочку по умолчанию (bash), вы можете использовать следующее:

for file in *.MOV; do ffmpeg2theora "$file"; done
20
ответ дан 31 July 2018 в 10:43

Если вы используете оболочку по умолчанию (bash), вы можете использовать следующее:

for file in *.MOV; do ffmpeg2theora "$file"; done
20
ответ дан 31 July 2018 в 11:47

Если вы используете оболочку по умолчанию (bash), вы можете использовать следующее:

for file in *.MOV; do ffmpeg2theora "$file"; done
20
ответ дан 2 August 2018 в 03:08

Если вы используете оболочку по умолчанию (bash), вы можете использовать следующее:

for file in *.MOV; do ffmpeg2theora "$file"; done
20
ответ дан 4 August 2018 в 18:59

Если вы используете оболочку по умолчанию (bash), вы можете использовать следующее:

for file in *.MOV; do ffmpeg2theora "$file"; done
20
ответ дан 6 August 2018 в 03:20

Если вы используете оболочку по умолчанию (bash), вы можете использовать следующее:

for file in *.MOV; do ffmpeg2theora "$file"; done
20
ответ дан 7 August 2018 в 21:04

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

Чтобы ограничить глубину рекурсии, вы можете добавить -maxdepth 1 до -exec

11
ответ дан 25 May 2018 в 19:27
  • 1
    Просто чтобы указать разницу между этим ответом и моим ответом: использование find также будет искать файлы в подкаталогах, решение for file in *.MOV будет отображаться только в текущем каталоге. – Marcel Stimberg 8 August 2011 в 22:24

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

Чтобы ограничить глубину рекурсии, вы можете добавить -maxdepth 1 до -exec

11
ответ дан 25 July 2018 в 21:29
  • 1
    Просто чтобы указать разницу между этим ответом и моим ответом: использование find также будет искать файлы в подкаталогах, решение for file in *.MOV будет отображаться только в текущем каталоге. – Marcel Stimberg 8 August 2011 в 22:24

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

Чтобы ограничить глубину рекурсии, вы можете добавить -maxdepth 1 до -exec

11
ответ дан 31 July 2018 в 10:43
  • 1
    Просто чтобы указать разницу между этим ответом и моим ответом: использование find также будет искать файлы в подкаталогах, решение for file in *.MOV будет отображаться только в текущем каталоге. – Marcel Stimberg 8 August 2011 в 22:24

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

Чтобы ограничить глубину рекурсии, вы можете добавить -maxdepth 1 до -exec

11
ответ дан 31 July 2018 в 11:47
  • 1
    Просто чтобы указать разницу между этим ответом и моим ответом: использование find также будет искать файлы в подкаталогах, решение for file in *.MOV будет отображаться только в текущем каталоге. – Marcel Stimberg 8 August 2011 в 22:24

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

Чтобы ограничить глубину рекурсии, вы можете добавить -maxdepth 1 до -exec

11
ответ дан 2 August 2018 в 03:08
  • 1
    Просто чтобы указать разницу между этим ответом и моим ответом: использование find также будет искать файлы в подкаталогах, решение for file in *.MOV будет отображаться только в текущем каталоге. – Marcel Stimberg 8 August 2011 в 22:24

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

Чтобы ограничить глубину рекурсии, вы можете добавить -maxdepth 1 до -exec

11
ответ дан 4 August 2018 в 18:59
  • 1
    Просто чтобы указать разницу между этим ответом и моим ответом: использование find также будет искать файлы в подкаталогах, решение for file in *.MOV будет отображаться только в текущем каталоге. – Marcel Stimberg 8 August 2011 в 22:24

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

Чтобы ограничить глубину рекурсии, вы можете добавить -maxdepth 1 до -exec

11
ответ дан 6 August 2018 в 03:20
  • 1
    Просто чтобы указать разницу между этим ответом и моим ответом: использование find также будет искать файлы в подкаталогах, решение for file in *.MOV будет отображаться только в текущем каталоге. – Marcel Stimberg 8 August 2011 в 22:24

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

Чтобы ограничить глубину рекурсии, вы можете добавить -maxdepth 1 до -exec

11
ответ дан 7 August 2018 в 21:04
  • 1
    Просто чтобы указать разницу между этим ответом и моим ответом: использование find также будет искать файлы в подкаталогах, решение for file in *.MOV будет отображаться только в текущем каталоге. – Marcel Stimberg 8 August 2011 в 22:24

Другие вопросы по тегам:

Похожие вопросы: