Разделить несколько mkv-файлов из терминала Ubuntu с помощью mkvmerge

Разделить несколько mkv-файлов из терминала Ubuntu с помощью mkvmerge

У меня много файлов .mkv

nightmare1.mkv
nightmare2.mkv
nightmare3.mkv
...

Я использую mkvmerge из терминала Ubuntu для разделенияодинокийфайл с этой командой

mkvmerge --split 1G --compression 0:none --compression 1:none --clusters-in-meta-seek -o "nightmare1.mkv" "nightmare1.mkv"

Первый кошмар — выход, второй — вход.

Я получаю эти файлы

nightmare1-001.mkv
nightmare1-002.mkv
...

Я пытаюсь понять, как мне разделитьвсеФайлы .mkv по 1 ГБ, потому что я хочу получить

nightmare1-001.mkv
nightmare1-002.mkv
 ...

nightmare2-001.mkv
nightmare2-002.mkv
 ...

nightmare3-001.mkv
nightmare3-002.mkv
 ...

Все фильмы кошмаров находятся в одной папке.
Как мне переписать команду? Проблема в том, что у меня есть один файл mkv в качестве входных данных, и я записываю как выходной файл в файл, но я хочу указать путь к папке в качестве входных данных, где находятся файлы mkv, и записывать в папку все новые разделенные файлы mkv.

решение1

forДля решения этой задачи можно использовать цикл Bash :

for file in ./source/*mkv; \
do \
    echo mkvmerge --split 1G --compression 0:none --compression 1:none \
    --clusters-in-meta-seek -o "./split/$(basename "$file")" "$file"; \
done
  • Скопируйте и вставьте все строки в терминал и выполните их как одну команду.
  • Как только вы будете удовлетворены результатами пробного прогона цикла,удалить echoкомандудля выполнения реальных операций.

В приведенном выше примере ./source/— относительный путь к каталогу, где хранятся исходные файлы. Соответственно ./split/— это путь назначения и его необходимо предварительно создать.

Для каждой итерации значение переменной $fileбудет выглядеть как ./source/nightmare-i.mkv. Подстановка команды $(basename "$file")вернет только имя файла без пути - т.е. nightmare-i.mkv, поэтому значение выходной опции будет выглядеть как ./split/nightmare-i.mkv.

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