Pipes são úteis quando você quer usar a saída padrão de um comando como a entrada padrão de outro comando. Mas você precisa passar um arquivo como entrada para ffmpeg
, não nomes de arquivos em sua entrada padrão. E você precisa executar ffmpeg
várias vezes, uma vez para cada arquivo de entrada para obter um arquivo de saída.
Para encurtar a história, os canais não são úteis para isso, você precisa de um loop como a outra resposta sugerida. Mas deve citar duas vezes os parâmetros do nome do arquivo:
for file in *.MOV; do
ffmpeg -y -i "$file" "$file.mp4"
done
Você mencionou em um comentário que poderia escrever um script Perl. Isso seria muito exagerado. O Bash é uma abordagem mais simples e perfeitamente adequada. Note que você pode escrever o script acima em uma única linha e executá-lo diretamente na linha de comando.
for file in *.MOV; do ffmpeg -y -i "$file" "$file.mp4"; done