Adicionando legendas para vários arquivos mkv por MKVmerge usando terminal

0

Estou tentando adicionar legendas para vários arquivos mkv. Eu uso esse script para fazer isso:

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

Funciona bem apenas para o diretório raiz. Mas não funciona para todos os arquivos na subpasta, por favor me ajude a fazer com que funcione para todos os arquivos na subpasta.

    
por user3087503 12.03.2015 / 21:41

2 respostas

0

Você poderia fazer algo assim:

# 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 "$@"' _ %
    
por 12.03.2015 / 23:19
0

Se você estiver usando bash , faça

shopt -s globstar
for file in **/*.mkv
do
    (your MKVmerge, etc., commands)
done

Definir a opção globstar shell diz bash para expandir **/ como todos os diretórios e subdiretórios.

P.S. Sempre cite todas as referências de variáveis de shell (a menos que você tenha uma boa razão para não fazer isso, e você tem certeza de que sabe o que está fazendo). Em particular, diga rm "$file" em vez de rm $file .

    
por 13.03.2015 / 00:02