디렉터리에 있는 여러 미디어 파일의 형식 정보를 얻으려고 합니다. 내 스크립트는 각 파일을 살펴보고 해당 형식(미디어 파일인 경우)을 언급한 다음 종료됩니다.
내가 정말로 원하는 것은 출력이 특정 값과 일치하면 특정 명령을 실행하는 것입니다. 이것은 내 코드입니다.
for file in ./*
do
ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=nokey=1:noprint_wrappers=1 "$file"
done
다음은 10개의 파일과 1개의 디렉터리가 포함된 폴더에서 실행할 때 얻는 샘플 출력입니다.
vorbis
aac
opus
vorbis
mp3
opus
mp3
./file1.txt: Invalid data found when processing input
./Soundcloud: Is a directory
mp3
./media_bash_file.sh: Invalid data found when processing input
이상적으로 내가 하고 싶은 일은 ffprobe 명령이 실행되면 가고 싶은 것입니다.
if ffprobe_output = "vorbis" then run x command ELSE ...
등. 사용에 관해 언급된 다양한 블로그 게시물을 시도해 보았습니다.
var=$(insert_ffprobe_command_here)
배치 파일의 시작 부분에 있지만 제대로 작동하지 않는 것 같습니다. 일반적으로 다음과 같은 오류가 발생합니다.
"Argument './Mediafile_X' provided as input filename, but './Mediafile_Y' was already specified.
내가 작성한 첫 번째 코드 조각만 얻었습니다.
답변1
for file in ./*
do
output=$(ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -of default=nokey=1:noprint_wrappers=1 "$file")
if [ "$output" = "vorbis" ];then ......
else ....
fi
done