
У меня много файлов .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
.