
Мне нужно создать скрипт, который сможет конвертировать все файлы .mkv в .mp4 в начальном каталоге и всех его подкаталогах.
Мне удалось конвертировать файлы по одному с помощью:
avconv -i input.mkv -codec copy output.mp4
и конвертация всех файлов в текущем каталоге не была бы слишком сложной. Но после нескольких часов поиска я не могу найти способ сделать это рекурсивно.
Я понял, что мне нужно использовать команду find, но я относительно новичок в Linux и совершенно теряюсь, пытаясь объединить find и avconv, чтобы добиться того, что мне нужно.
решение1
Вам необходимо включить рекурсивную подстановку в Bash:
shopt -s globstar
Затем простой цикл, заменяющий имя выходного файла:
for f in **/*.mkv; do avconv -i "$f" -c copy "${f%.mkv}.mp4"; done
Обратите внимание, что это может не сработать на видео, содержащих кодеки, которые не поддерживаются контейнерами MP4. MP4 более ограничен, чем MKV, который в принципе может включать все кодеки.