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 for
loop 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
echo
comandopara 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 $file
será 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
.