ターミナルを使用したMKVmergeによる複数のmkvファイルの字幕の追加


0

複数のmkvファイルに字幕を追加しようとしています。このためにこのスクリプトを使用します。

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

ルートディレクトリでのみ正常に機能します。しかし、サブフォルダー内のすべてのファイルで機能するわけではありません。サブフォルダー内のすべてのファイルで機能するようにしてください。

回答:


0

次のようなことができます:

# 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 "$@"' _ %

0

を使用している場合はbash

shopt -s globstar
** / *。mkvのファイル用
行う
    (MKVmergeなどのコマンド) 
完了

globstarシェルオプションを設定bashすると**/、すべてのディレクトリとサブディレクトリとして展開するように指示されます。

PS常にすべてのシェル変数参照を引用してください(そうしない非常に正当な理由がない限り、何をしているのかを確実に知っている場合を除きます)。特に、rm "$file"代わりに言うrm $file

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.