변수에 유효한 비디오 파일 확장자가 있는지 테스트합니다.

변수에 유효한 비디오 파일 확장자가 있는지 테스트합니다.

변수에 유효한 비디오 파일 확장자( .mp4)가 있는지 테스트하는 방법은 무엇입니까?

답변1

예를 들어 쉘 패턴 비교 사용 bash:

if [[ $variable == *.mp4 ]]; then
    printf 'String "%s" ends in ".mp4"\n' "$variable"
else
    printf 'String "%s" has some other suffix\n' "$variable"
fi

case또는 많은 접미사 문자열을 비교하려는 경우 더 보기 좋을 수 있는 표준 문을 사용하세요 .

case $variable in
    *.mp4)
        printf 'String "%s" ends in ".mp4"\n' "$variable"
        ;;
    *.mov)
        printf 'String "%s" ends in ".mov"\n' "$variable"
        ;;
    *.blarg|*.foo)
        printf 'String "%s" ends in ".blarg" or ".foo"\n' "$variable"
        ;;

    *)
        printf 'String "%s" has some other suffix\n' "$variable"
esac

변수에 경로 이름이 포함되어 있고 해당 경로 이름의 파일이 비디오 형식 파일인지 테스트하려는 경우 file파일 내용을 정렬하도록 명령을 요청하는 것이 (아마도) 더 좋습니다. 이는 Unix 시스템의 파일이 임의적이고 my video.mp4디렉토리가 분명히 비디오 파일이 아닌 경우에도 호출될 수 있기 때문입니다.

다음을 사용하여 파일의 MIME 유형을 얻을 수 있습니다. file -i(여기서는 파일 이름 없이 "짧은" 출력 옵션도 사용하고 있습니다. file)-b

$ file -b -i 'video/the_amazing_spiderman_trailer.mp4'
video/mp4; charset=binary

이는 스크립트에서 사용할 수 있습니다.

if file -b -i "$variable" | grep -q -F 'video/mp4;'
then
    printf '"%s" is most likely an MP4 video\n' "$variable"
fi

위 코드에서는 접미사 문자열에 무엇이 포함되어 있는지는 중요하지 않습니다 $variable.

저는 이것을 FreeBSD 시스템에서 테스트하고 있으며 출력은 file표준이 아닙니다. 로컬 컴퓨터에서 테스트해야 합니다. 또한 filemacOS의 명령 -I-i.

file내 답변에 더 많은 정보가 포함된 다소 관련된 질문입니다.

관련 정보