AVConv 循环存在输出文件名问题

AVConv 循环存在输出文件名问题

我该如何转身:

/media/MediaOne/Movies/Kids/Aladdin.avi
/media/MediaOne/Movies/Kids/Incredibles.avi

进入

/media/MediaOne/converted/Aladdin.mp4
/media/MediaOne/converted/Incredibles.mp4

当使用 avconv 循环目录时?

目前,它们的输出如下:

/media/MediaOne/Movies/Kids/Aladdin.avi.mp4
/media/MediaOne/Movies/Kids/Incredibles.avi.mp4

以下是我正在尝试的:

for i in /media/MediaOne/Movies/Kids/*.avi; do avconv -i "$i" -c copy "$i.mp4"; done

也尝试过这个:

for i in /media/MediaOne/Movies/Kids/*.avi; do avconv -i "$i" -c copy "/media/MediaOne/converted/$i.mp4"; done

但出现了一堆错误,因为 $i/media/MediaOne/verted/ 不存在

答案1

使用basename命令从文件名中删除扩展名,注意特殊引号

`$(basename $i .avi).mp4`

代替

"$i.mp4"

dirname可能有助于提取包含输入文件的文件夹的路径。(man dirname寻求帮助)

相关内容