Befehl auf alle Dateien in einem Ordner anwenden

Befehl auf alle Dateien in einem Ordner anwenden

Ich habe einen Ordner voller Videos, die alle über zwei Audiospuren verfügen, und ich möchte von jedem die erste entfernen.

Also muss ich Folgendes ausführen:

ffmpeg -i [filename] -map 0:0 -map 0:2 -acodec copy -vcodec copy temp.mp4
mv temp.mp4 [filename]

für jede Datei in diesem Ordner.

Antwort1

find . -type f \
       -exec ffmpeg -i '{}' -map 0:0 -map 0:2 -acodec copy -vcodec copy temp.mp4 \; \
       -exec mv temp.mp4 '{}' \;`

Antwort2

Ich würde es verwenden findmit -exec:

find . -type f -name "*.mp4" -exec ffmpeg -i {} -map 0:0 -map 0:2 -acodec copy -vcodec copy {} \;

Aber ein ls -1 *.mp4 | ffmpegfunktioniert auch gut.

Antwort3

for file in $(ls)
do
    #whatever you want to do with "${file}"
done

verwandte Informationen