我想使用 f 和 v 作为变量。f *.mkv 和 v *.mp3
for f in *.mkv v in *.mp3; do
ffmpeg -i "$f" -i "$v" -vcodec copy merge_"$f"
done
我不知道如何正确地做到这一点。我还是 bash shell 脚本的新手。
我希望有一个人可以帮助我。
我想使用 f 和 v 作为变量。f *.mkv 和 v *.mp3
for f in *.mkv v in *.mp3; do
ffmpeg -i "$f" -i "$v" -vcodec copy merge_"$f"
done
我不知道如何正确地做到这一点。我还是 bash shell 脚本的新手。
我希望有一个人可以帮助我。
如果*.mp3
和*.mkv
basenames 相同:
for f in *.mkv; do
mp3name="${f%.mkv}.mp3"
ffmpeg -i "$f" -i "$mp3name" -vcodec copy "merge_${f}"
done
如果您正在寻找一种方法来循环遍历变量,就像使用原始代码循环一样,您可以这样做:
f=(*.mkv)
v=(*.mp3)
for((i=0;i<${#f[@]};i++));do
echo "${f[$i]} ${v[$i]}"
done
一般假设是,您拥有相同数量的文件mkv
和mp3
.
或者,如果文件具有相同的基本名称,您可以这样做:
for f in *.mkv;do
v="${f/%mkv/mp3}"
echo "$f $v"
done
在最后"${f/%mkv/mp3}"
mkv
被替换mp3
。
有关详细信息,请参阅Bash 参数扩展。