Та же команда для всех файлов на папке и вывода на том же файле

Я являюсь новым на 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

но это не работало.

2
задан 13 February 2020 в 09:34

1 ответ

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
6
ответ дан 20 February 2020 в 22:54

Другие вопросы по тегам:

Похожие вопросы: