Tengo muchos archivos .mkv
nightmare1.mkv
nightmare2.mkv
nightmare3.mkv
...
Utilizo mkvmerge desde la terminal de Ubuntu para dividir unsolteroarchivo con este comando
mkvmerge --split 1G --compression 0:none --compression 1:none --clusters-in-meta-seek -o "nightmare1.mkv" "nightmare1.mkv"
La primera pesadilla es la salida, la segunda es la entrada.
Recibo estos archivos
nightmare1-001.mkv
nightmare1-002.mkv
...
Intento entender cómo puedo dividirtodoArchivos .mkv en piezas de 1 GB porque quiero obtener
nightmare1-001.mkv
nightmare1-002.mkv
...
nightmare2-001.mkv
nightmare2-002.mkv
...
nightmare3-001.mkv
nightmare3-002.mkv
...
Todas las películas de pesadillas están en la misma carpeta.
¿Cómo debo reescribir el comando? El problema es que tengo un único archivo mkv como entrada y escribo como salida en un archivo, pero quiero establecer la ruta de la carpeta como entrada donde se encuentran los archivos mkv y escribir dentro de la carpeta todos los nuevos archivos mkv divididos.
Respuesta1
Puedes usar un for
bucle Bash para resolver esta tarea:
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 y pegue todas las líneas en la terminal y ejecútelas como un solo comando.
- Una vez que esté satisfecho con el resultado del ensayo del bucle,eliminar el
echo
comandopara realizar las operaciones reales.
En el ejemplo anterior ./source/
hay una ruta relativa al directorio donde se almacenan los archivos originales. Respectivamente ./split/
es el camino de destino y debe estar embalado preliminarmente.
Para cada iteración, el valor de la variable $file
se verá así ./source/nightmare-i.mkv
. La sustitución del comando $(basename "$file")
devolverá sólo el nombre del archivo sin la ruta, es decir nightmare-i.mkv
, así se verá el valor de la opción de salida ./split/nightmare-i.mkv
.