Pipes sind nützlich, wenn Sie die Standardausgabe eines Befehls als Standardeingabe eines anderen Befehls verwenden möchten . Sie müssen jedoch eine Datei als Eingabe übergeben ffmpeg
, nicht Dateinamen in der Standardeingabe. Und Sie müssen ffmpeg
mehrere Male ausgeführt werden, einmal für jede Eingabedatei, um eine Ausgabedatei zu erhalten.
Lange Rede kurzer Sinn, Pipes sind dafür nicht sinnvoll, Sie brauchen eine Schleife, wie die andere Antwort vorschlägt. Sollte aber die Dateinamenparameter in Anführungszeichen setzen:
for file in *.MOV; do
ffmpeg -y -i "$file" "$file.mp4"
done
Sie haben in einem Kommentar erwähnt, dass Sie ein Perl-Skript schreiben könnten. Das wäre wirklich übertrieben. Bash ist ein einfacher, perfekt geeigneter Ansatz. Beachten Sie, dass Sie das obige Skript in eine einzelne Zeile schreiben und direkt in der Befehlszeile ausführen können.
for file in *.MOV; do ffmpeg -y -i "$file" "$file.mp4"; done