Preciso criar um script que possa converter todos os arquivos .mkv em .mp4 em um diretório inicial e todos os subdiretórios abaixo dele.
Consegui converter arquivos um de cada vez usando:
avconv -i input.mkv -codec copy output.mp4
e converter todos os arquivos no diretório atual não seria muito difícil. Mas depois de horas de pesquisa, não consigo encontrar uma maneira de fazer isso recursivamente.
Descobri que preciso usar o comando find, mas sou relativamente novo no Linux e fico completamente perdido ao combinar find e avconv para realizar o que preciso.
Responder1
Você precisa habilitar o globbing recursivo no Bash:
shopt -s globstar
Então, um loop simples, substituindo o nome do arquivo de saída:
for f in **/*.mkv; do avconv -i "$f" -c copy "${f%.mkv}.mp4"; done
Observe que isso pode falhar em vídeos que contêm codecs que os contêineres MP4 não suportam. MP4 é mais restritivo que MKV, que pode incluir basicamente todos os codecs.