从文件名中抓取2个数字,然后插入命令

总的来说,我对编程有点新,而且我不确定如何在bash脚本中完成这个任务。

一个简单的背景:在将我的音乐库(以前由iTunes组织)导入到Banshee时,所有的文件都被复制到适合Banshee的数字风格(例如02.而不是02),iTunes显然没有保存ID3标签到文件,所以很多都是空白的。 所以现在我有几千个标签来修复和重复文件摆脱。

为了使这个过程自动化,我开始学习编写bash脚本。 我想出了一个脚本( 你可以在这里看到 )做四件事情:删除不必要的iTunes文件,从用户input有关ID3标签信息的input,并将其存储在variables中,清除所有文件中的任何现有标签信息,信息来自用户,使用eyeD3程序。

现在,这是我遇到我的问题的地方。 这个脚本基本上是盲目地把信息写到dir中的所有mp3文件。 对于所有文件都有共同点的标签,比如艺术家,专辑,全部曲目,年份等等,这都很好。但是我不能用这种方法标记每个单独的曲目号码。 所以我仍然在手动编辑一个标签。 而这是我真的不想做2000多次的事情。

文件名全都是这样的:

01. song1.mp3 02. song2.mp3 03. song3.mp3 

将轨道编号写入标签的命令如下所示:

 $ eyeD3 -n 1 "01. song1.mpg" 

所以…我不知道如何去实现这个自动化。 我需要抓住每个文件名的前两位数字,将它们存储在某个地方,然后将每个文件调回到单独的eyeD3命令中。

您可以使用globbing循环遍历文件,并使用子字符串扩展来捕获文件名的前两个字符:

 for f in *mp3; do eyeD3 -n ${f:0:2} "$f" done