![Применить команду ко всем файлам в папке](https://rvso.com/image/97253/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D0%BA%D0%BE%D0%BC%D0%B0%D0%BD%D0%B4%D1%83%20%D0%BA%D0%BE%20%D0%B2%D1%81%D0%B5%D0%BC%20%D1%84%D0%B0%D0%B9%D0%BB%D0%B0%D0%BC%20%D0%B2%20%D0%BF%D0%B0%D0%BF%D0%BA%D0%B5.png)
У меня есть папка с видео, каждое из которых имеет две звуковые дорожки, и я хочу удалить первую из каждой из них.
Итак, мне нужно запустить:
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