我试图获取目录中一堆媒体文件的格式信息。我的脚本会遍历每个文件,提及其格式(如果是媒体文件),然后退出。
我真正想做的是,如果输出与某个值匹配,则运行特定的命令。这是我的代码:
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