重命名文件,保留basename,添加额外的单词并更改扩展名



我有一个脚本来编码视频文件。当我运行这个脚本时,我想保留文件的基本名称,在文件名中添加一个'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

最新更新