Use um loop for. Este exemplo é para bash e usa a manipulação da variável bash , mas ela pode ser adaptada para outros shells do tipo unix / linux.
Nota : presume-se que você esteja no diretório dos arquivos e que os arquivos de vídeo e áudio estejam presentes com o mesmo nome, diferindo apenas por extensão ( .m4v - video, .m4a - audio).
for v in *.m4v; do ffmpeg -i "${v}" -i "${v//.m4v/.m4a}" -acodec copy -vcodec copy "${v//.m4v/.mp4}"; done
Explicação
for v in *.m4v Execute as seguintes ações em todos os arquivos terminados em '.m4v'. v é um nome de variável que será atribuído a cada arquivo de vídeo no diretório atual, um por vez, por bash . bash converterá automaticamente o *.m4v em uma lista de arquivos .m4v no diretório atual e os alimentará no loop for. Você não precisa inserir nomes de arquivos manualmente.
Variável v contém um nome de arquivo de vídeo diferente em cada iteração de loop, por exemplo, "video_file_1.m4v" , depois "video_file_2.m4v" etc. O ${v//pattern/replacement} informa bash para localizar ocorrências de pattern e substituí-las por %código%. Por exemplo, replacement converterá o nome do arquivo ${v//.m4v/.mp4} para "video_file_1.m4v" .