Труби корисні, коли ви хочете використовувати стандартний вихід однієї команди як стандартний вхід іншої команди. Але вам потрібно передавати файл як вхідний файл 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