Divida vários arquivos mkv do terminal Ubuntu usando mkvmerge

Divida vários arquivos mkv do terminal Ubuntu usando mkvmerge

Eu tenho muitos arquivos .mkv

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

Eu uso mkvmerge do terminal do Ubuntu para dividir umsolteiroarquivo com este comando

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

O primeiro pesadelo é a saída, o segundo é a entrada

Eu recebo esses arquivos

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

Eu tento entender como posso dividirtodosArquivos .mkv em pedaços de 1 GB porque quero obter

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

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

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

Todos os filmes de pesadelo estão na mesma pasta.
Como devo reescrever o comando? O problema é que tenho um único arquivo mkv como entrada e escrevo como saída em um arquivo, mas quero definir o caminho da pasta como a entrada onde os arquivos mkv estão localizados e escrever dentro da pasta todos os novos arquivos mkv divididos.

Responder1

Você pode usar um forloop Bash para resolver esta tarefa:

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
  • Copie e cole todas as linhas no terminal e execute-as como um único comando.
  • Quando estiver satisfeito com a saída de teste do loop,remova o echocomandopara fazer as operações reais.

No exemplo acima ./source/está um caminho relativo para o diretório onde os arquivos originais estão armazenados. Respectivamente ./split/é o caminho de destino e deve ser criado preliminarmente.

Para cada iteração, o valor da variável $fileserá semelhante a ./source/nightmare-i.mkv. A substituição do comando $(basename "$file")retornará apenas o nome do arquivo sem o caminho - ou seja nightmare-i.mkv, o valor da opção de saída será parecido com ./split/nightmare-i.mkv.

informação relacionada