Каналы полезны, когда вы хотите использовать стандартный вывод одной команды в качестве стандартного ввода другой команды. Но вам нужно передать файл в качестве ввода в ffmpeg
, а не имена файлов на его стандартном вводе. И вам нужно запустить ffmpeg
несколько раз, один раз для каждого входного файла, чтобы получить выходной файл.
Короче говоря, трубы для этого бесполезны, вам нужен цикл, как предложил другой ответ. Но следует заключить в кавычки параметры имени файла:
for file in *.MOV; do
ffmpeg -y -i "$file" "$file.mp4"
done
В комментарии вы упомянули, что можете написать скрипт на Perl. Это было бы действительно излишним. Bash - это более простой и идеально подходящий подход. Обратите внимание, что вы можете написать приведенный выше скрипт в одной строке и запустить его непосредственно в командной строке.
for file in *.MOV; do ffmpeg -y -i "$file" "$file.mp4"; done