Agregando subtítulos para múltiples archivos mkv por MKVmerge usando terminal

0

Estoy tratando de agregar subtítulos para múltiples archivos mkv. Yo uso este script para hacer esto:

for file in *.mkv; do "/Applications/Mkvtoolnix-7.0.0.app/Contents/MacOS/mkvmerge" -o "${file%\.*}(1).mkv"   "(" "$file" ")"  "(" "${file%\.*}.srt" ")" ; rm $file

Funciona bien sólo para el directorio raíz. Pero no funciona para todos los archivos de la subcarpeta, ayúdeme a hacer que funcione para todos los archivos de la subcarpeta.

user3087503
fuente

Respuestas:

0

Podrías hacer algo como esto:

# make bash function to do conversion and deletion
conv() {
 /Applications/Mkvtoolnix-7.0.0.app/Contents/MacOS/mkvmerge -o "${1%\.*}(1).mkv"   "(" "$1" ")"  "(" "${1%\.*}.srt" ")"
 rm "${1}"
}
# make conv function available to xargs
export -f conv
# recursively convert every .mkv file in current directory
find . -name "*.mkv" -type f -print0 | xargs -0 -n1 -I% bash -c 'conv "$@"' _ %
Tim
fuente
0

Si estas usando bashhacer

shopt -s globstar
for file in **/*.mkv
do
     (tus MKVmerge, etc., comandos)  hecho 

Configurando el globstar la opción de shell dice bash expandir **/ Como todos los directorios y subdirectorios.

PD Siempre cotice todas las referencias de variable de shell (a menos que tenga una buena razón para no hacerlo, y está seguro de que sabe lo que está haciendo). En particular, decir rm "$file" en lugar de rm $file.

G-Man
fuente