如何批量用文件名末尾的字符串替换文件名开头的字符串?

如何批量用文件名末尾的字符串替换文件名开头的字符串?

我正在寻找可以与 Kubuntu 终端(Konsole)一起使用的命令。

(编辑)我知道如何删除文件名中最后 13 个无用的字符,那么如果我想用文件名中的艺术家姓名替换“卡拉 OK”,脚本会是什么?“卡拉 OK”+ 空格 + “歌曲标题”+“ - ”+“艺术家姓名”+ .mp4?

有没有办法将目录中所有文件的“卡拉 OK”一词替换为“艺术家姓名”?提前致谢。

以下是 Oli 请求的示例文件名:

Karaoke A Spoonful Of Sugar - Mary Poppins
Karaoke Ain't No Stoppin' Us Now - McFadden & Whitehead
Karaoke Ain't Nobody - Chaka Khan
Karaoke A Tisket, A Tasket - Ella Fitzgerald

答案1

虽然有点夸张,但在这里还是有效的:

$ rename 's/^Karaoke (.+) - (.+) - \w{11}\.mp4$/$2 - $1.mp4/' * -vn
Karaoke banana - cher - 12345678901.mp4 renamed as cher - banana.mp4

您需要敲掉末端-n才能真正重命名文件。我保留了安全功能。

我们正在做这里是找到任何符合这个模式的文件,从该模式中捕获艺术家和曲目,然后用这两个组(以及一些格式和扩展名)替换整个内容。

我无法预测如果艺术家的-名字中包含 会发生什么。可能没有什么好处,但单个破折号(没有空格)应该没问题。

答案2

如果都是mp4扩展则使用这个

重命名“s/^Karaoke (.+)-(.+)-\w{11}.mp4$/\$2-\$1.mp4/”*.mp4 -n

如果符号前后没有空格-,则使用@oli 示例

@terdon 我的错误...

相关内容