Wie kann ich im Terminal einen Befehl mehrmals für verschiedene Dateien wiederholen?


13

Im Terminal möchte ich ffmpeg2theora verwenden, um alle .MOV-Dateien in einem bestimmten Verzeichnis in .ogv-Dateien zu konvertieren. Folgendes funktioniert jedoch nicht:

ffmpeg2theora *.MOV

Gibt es eine gute Möglichkeit, einen Befehl für verschiedene Dateien mehrmals zu wiederholen?

Vielen Dank!

Antworten:


20

Wenn Sie die Standardshell (bash) verwenden, können Sie Folgendes verwenden:

for file in *.MOV; do ffmpeg2theora "$file"; done

5
Dies funktioniert eher ohne die Schrägstriche:for file in *.[Mm][Oo][Vv]; do ffmpeg2theora "$file"; done
Frabjous

ja, du hast absolut recht, ich habe meine antwort korrigiert.
Marcel Stimberg

1
Sie können die nocaseglobbash-Option auch so einstellen, dass sie mit Dateierweiterungen in Kleinbuchstaben oder in Großbuchstaben übereinstimmt.
Enzotib

Vielen Dank! Ich habe Bash noch nie benutzt, aber es sieht wirklich nützlich aus. (Zeit für mich zu lernen!)
Alan C

11

find . -iname '*.mov' -exec ffmpeg2theora '{}' \;

Um die Rekursionstiefe zu begrenzen, können Sie -maxdepth 1zuvor hinzufügen-exec


2
Um den Unterschied zwischen dieser Antwort und meiner Antwort zu verdeutlichen: Wenn Sie find verwenden, werden auch Dateien in Unterverzeichnissen gesucht. Die for file in *.MOVLösung sucht nur im aktuellen Verzeichnis.
Marcel Stimberg
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.