Я являюсь новым на Linux, и я хочу сделать цикл на файле, чтобы сделать ту же команду на всех файлах в папке, команда включает имя файла:
ffmpeg -i REC_2019_08_31_11_52_30_F.MP4 REC_2019_08_31_11_52_30_F.ass
Я попробовал
for f in files do ''command'' done
но это не работало.
A for
цикл, преобразовывающий каждый .MP4
файл в текущем каталоге с Расширением Параметра для изменения расширения файла был бы похож на это:
for i in *.MP4; do
ffmpeg -i "$i" "${i/%MP4/ass}"
done
${i/%MP4/ass}
расширяется до в настоящее время обрабатываемого имени файла с последним происшествием “MP4”, замененного “задницей”. Другой способ достигнуть того же состоит в том, чтобы сократить строку из последней точки и добавить новое расширение: ${i%.*}.ass
В случае нескольких вероятно, длительные операции как это мне действительно нравится использовать GNU parallel
, который рабочими заданиями параллельно может высоко увеличить скорость. Вышеупомянутый цикл с parallel
просто был бы:
parallel ffmpeg -i {} {.}.ass ::: *.MP4