Ubuntuでこのコマンドラインを使用する方法

Ubuntuでこのコマンドラインを使用する方法

私は例の形で質問をします...メイン フォルダー ==)Got、Vikings など、いくつかのサブフォルダーを含むフォルダーがあります。それぞれに、対応する srt ファイルを含むビデオがあります。Windows 環境では、メイン フォルダーでこのコマンドを実行すると、mkvmerge がこのディレクトリ内のビデオ全体と対応する srt ファイルを mux します。

For /R %%A IN (*.mkv *.mp4) Do (
    "C:/Program Files/MKVToolNix\mkvmerge.exe" -o "%%~dpnxAtemp" "%%~fA" "%%~dpnA.srt" && if errorlevel 2 (
        echo errors generated during remuxing, original file not deleted
    ) else if errorlevel 1 (
        del /f "%%~fA" "%%~dpnA.srt" echo Warnings generated during remuxing to "%%~A", original file deleted
    ) else (
        del /f "%%~fA" "%%~dpnA.srt" echo Successfully remuxed to "%%~A", original file deleted
    ) && for /R %%A IN (*.mkvtemp *.mp4temp) do ren "%%~fA" "%**.mkv"
)
Pause

答え1

コードにはいくつかエラーがありますが、私は次のように理解しています: 1

すべてに対して以下を再帰的に実行し*.mkv*.mp4見つけます。

  1. mkvmerge各ファイルとそれに対応する を実行します*.srt
  2. 成功した場合(警告または正常終了):
    • 入力ファイルを削除します。
    • 作成したファイルの名前を に変更します<original_name>.mkv

これは、Ubuntu で次のスクリプトを使用して実行できます。
完全にテストしていないので、自己責任で使用してください。

#!/bin/bash
find . -name \*.mp4 -o -name \*.mkv | while read orig_filename
do
   filename="${orig_filename::-4}"  # crop the extension
   mkvmerge -o "$orig_filename.tmp" "$orig_filename" "$filename.srt"
   if [ $? -le 1 ]  # warning or clean exit
   then
       rm "$orig_filename" "$filename.srt"
       mv "$orig_filename.tmp" "$filename.mkv"
   fi
done

このスクリプトを実行する前に、mkvmergeUbuntu用のプログラム:

sudo apt install mkvtoolnix

1簡潔にするためにエラー メッセージは省略しました。コメントによると、エラー メッセージはスクリプトにとって必須ではないようです。

関連情報