0
그것은 그것을 할 생각 무엇하게,하지만 난 그것을 할 수있는 더 효율적인/영리한 해결책이 확신 :내 스크립트를 정리하는 방법?
#!/bin/bash
find . -iname "*.mp4" | while read f
do
id=$(echo $f | sed -n 's/.*.S\([0-9]\+\)E\([0-9]\+\)..*/\1x\2/p' | sed 's/^0*//')
if [ -z "$id" ]; then
echo "Warning! there's no match for $f"
else
srt=(*$id*)
newName=$(echo $srt | sed 's/ (English).srt/.mp4/g')
mv "$f" "$newName"
fi
done
이 첫 번째 부분은 SRT 파일의 이름을 사용하고 MP4 이름을 바꿀 수는 파일.
for i in *" (Español (España)).srt"
do
iconv -f=ISO8859-1 -t=UTF-8 "$i" > "${i%%" (Español (España)).srt"}.esp.srt"
done
sleep 0.5
for i in *".srt"
do
rm *" (Español (España)).srt"
done
코드의 상기 부분은 SRT 파일
for i in *".mp4"
do
i=${i%.mp4}
mkvmerge -o "$i.mkv" \
"--language" "1:eng" \
"-a" "1" "-d" "0" "-S" "-T" "$i.mp4" \
"--language" "0:eng" \
"-s" "0" "-D" "-A" "-T" "$i (English).srt" \
"--language" "0:spa" \
"-s" "0" "-D" "-A" "-T" "$i.esp.srt" \
"--track-order" "0:0,0:1,1:0,2:0"
done
find . -type f ! -name "*.mkv" ! -name "*.sh" -delete
for files in *.mkv
do
mv "$files" "${files%.mkv}.mp4"
done
notify-send -t 2000 "Fin de la conversión"
후자
부분의 인코딩을 변경 SRT 파일을 MP4 파일을 병합.
이미 최소한으로 깨끗하게 보인다. 어쩌면 각 명령의 끝에'&&'를 추가하여 오류를보다 잘 처리 할 수 있습니다. 또한 if 문을 재미있게 만들기 위해 bash 스타일을 쓸 수도 있습니다 (예 :'[[-z "$ id"]] && echo "경고"&& continue') – naab
[CodeReview] (http : // codereview.stackexchange.com/)보다 – BroSlow