2012-08-14 30 views
0

我已经搜索了所有的StackOverflow和互联网的其他部分,到目前为止我没有发现任何可以帮助解决我的问题。大量扫描和重命名文件名

我的问题是,在iTunes中,我有大约220首歌曲被列为“艺术家名称 - 歌名”(例如“Modest Mouse - Dramamine”),我想知道是否有任何方法可以编写Ruby脚本会将这些变成在iTunes中使用连字符(“Dramamine”)成为歌曲标题后的单词以及连字符(“Modest Mouse”)成为艺术家之前的单词来正确列出。另外,如果有任何程序可以实现相同的目标,那么可以肯定的是,如果有人可以共享链接,但是,如果任何人都可以指向我可以学习如何批量扫描并更改文件名的地方在Ruby中,然后将这些歌曲的变化放入iTunes可以读取并显示的歌曲中,然后我们将不胜感激。谢谢!

+0

递归目录扫描和MP3库有很多例子(比如ruby-mp3info,taglib-ruby等)。你有什么特别的问题? – 2012-08-14 00:12:32

回答

0

查看RegexFile Ruby库以及Dir。他们给你工作的工具。

例如,

Dir["path/to/your/music/*.m4a"].each do |filename| 
    m = File.basename(filename).match(/(.+)-(.+)/) 
    artist = m[1].strip # remove leading and trailing blanks 
    song = m[2].strip 
    new_filename = song + ' - ' + artist 
    File.rename(filename, "path/to/your/music/#{new_filename}.m4a" 
|end| 

还有其他招数,比如,你可以使用反单引号(',而不是“),通过替换块中的最后一行做文件重命名:

`mv #{filename} path/to/your/music/#{new_filename}.m4a` 

这将在Unix shell中运行mv命令。

祝你好运摆弄!没有什么比通过试验和错误学习更好!