我有一个脚本来编码视频文件。当我运行这个脚本时,我想保留文件的基本名称,在文件名中添加一个'modified'字符串,并更改扩展名。
下面的for循环就是这样做的,除了改变扩展名:
for file in *.mkv;
do
encode $file "${file%%.*}_modified.${i#*.}";
done
我希望my_file.mkv
变成my_file_modified.mp4
。前一个循环只是将my_file.mkv
转化为my_file_modified.mkv
如何更改扩展名从.mkv
到.mp4
?
提前感谢。
我不确定我是否理解对了你的问题,很可能不是;但是如果我做了,你应该这样做:
for file in *.mkv;
do
encode $file "${file%.*}_modified.mp4";
done
前面命令中的${i#*.}
部分实际上从文件名中获取了原始扩展名;你可以省略它并设置你自己的扩展名。
也可以写成@M。NejatAydin在评论中指出,你应该使用${file%.*}
而不是${file%%.*}
,以保留整个原始文件名,如果它里面有一个点。
例如:
$ file="test.file.mkv"
$ echo "${file%%.*}_modified.mp4"
test_modified.mp4 # This is probably NOT what you want
$ echo "${file%.*}_modified.mp4"
test.file_modified.mp4 # This is probably what you want