그래서 저는 비디오를 webm 형식으로 변환하기 위해 제가 작성한 스크립트를 사용하고 있습니다. 프로그램은 %f
다음과 같이 비디오의 전체 절대 파일 이름을 보내는 스크립트를 호출합니다.
converter.sh %f
%f
두 가지 가능한 확장자 .avi
가 있습니다 .mpg
.
# /bin/bash
ffmpeg -i $1 `dirname $1``basename $1 avi`webm && rm $1
현재 확장명이 제거되었기 때문에 파일을 $1
포함할 .avi
때 완벽하게 작동합니다 . 반대로 끝나는 경우 결과는 입니다 .basename
.avi
$1
.mpg
.mpgwebm
이 두 가지 가능한 형식을 허용하도록 이 스크립트를 어떻게 수정합니까?
복구: $1
그렇다면 /somedir/video.avi
스크립트는 다음을 수행해야 합니다.
ffmpeg -i /somedir/video.avi /somedir/video.webm
그렇다면 스크립트는 다음을 수행해야 합니다 $1
./somedir/video.mpg
ffmpeg -i /somedir/video.mpg /somedir/video.webm
나는 이것이 어떤 사람들에게는 어리석게 보일 수도 있다는 것을 알고 있지만 나는 bash를 처음 접했습니다.
답변1
대부분의 쉘에서 제공하는 대체 메커니즘을 사용할 수 있습니다.
B=$(basename "$1"); D=$(dirname "$1");
ffmpeg -i "$1" "$D/${B%.*}.webm" && rm "$1"
실제로 대체를 통해 모방 할 basename
수도 있습니다.dirname
참고: .*
에서 접미사를 직접 삭제하세요 this.dir/file
.