Применить команду ко всем файлам в папке

Применить команду ко всем файлам в папке

У меня есть папка с видео, каждое из которых имеет две звуковые дорожки, и я хочу удалить первую из каждой из них.

Итак, мне нужно запустить:

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

для каждого файла в этой папке.

решение1

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

решение2

Я бы использовал findс -exec:

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

Но a ls -1 *.mp4 | ffmpegтоже работает нормально.

решение3

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

Связанный контент