우분투에서 이 명령줄을 사용하는 방법

우분투에서 이 명령줄을 사용하는 방법

저는 예의 형태로 질문합니다. 메인 폴더==)Got, Vikings 등 여러 하위 폴더가 포함된 폴더가 있습니다. 각 폴더에는 해당 srt 파일이 포함된 비디오가 있습니다. Windows 환경에서는 기본 폴더에서 이 명령을 실행하면 mkvmerge가 이 디렉터리의 전체 비디오와 해당 srt 파일을 다중화합니다.

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

이 스크립트를 실행하기 전에 다음을 설치해야 합니다.mkvmerge우분투용 프로그램:

sudo apt install mkvtoolnix

1 단순화를 위해 오류 메시지를 생략했습니다. 의견에 따르면 스크립트에 필수적인 것 같지 않습니다.

관련 정보