我想将所有.swf
个文件转换为某个目录中的mp4
个文件。我使用*
通配符来识别文件夹中以.swf
结尾的所有文件 - > *.swf
。
所以,假设我有几个视频:
我想在新命名中重复使用找到的名称,在我的bash示例中使用video1.mp4
和video2.mp4
:
ffmpeg -i *.swf -vcodec mpeg4 *.mp4
如何重用通配符找到的模式?
答案 0 :(得分:4)
您可以使用BASH字符串替换:
s='video1.swf'
f="${s/.swf/.mp4}"
echo "$f"
video1.mp4
使用ffmpeg
:
for f in *.swf; do
ffmpeg -i "$f" -vcodec mpeg4 "${f%.swf}.mp4"
done
答案 1 :(得分:4)
您可以对模式中的每个文件名使用循环,并替换文件扩展名:
for f in *.swf ; do ffmpeg -i "$f" -vcodec mpeg4 "$(basename "$f" .swf).mp4" ; done
答案 2 :(得分:3)
您可以使用文件名填充数组:
files=(*.swf)
然后,对整个数组进行替换以获取新名称:
ffmpeg -i "${files[@]}" -vcodec mpeg4 "${files[@]/%.swf/.mp4}"