Os pipes são úteis quando você deseja usar a saída padrão de um comando como entrada padrão de outro comando. Mas você precisa passar um arquivo como entrada para ffmpeg
, e 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, tubos 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 realmente um exagero. O Bash é uma abordagem mais simples e perfeitamente adequada. Observe 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