2011-08-12 61 views
3

我有一个脚本,重命名文件从.csv文件,这个文件工作正常,但我希望编辑一点点,以便它可以帮助我更多。红宝石重命名文件

的情况是我必须有一个CID代码中的一些人有CID编码8000倍的图像他们中的一些有额外的文本与它正在相同的CID的ID多个图像即17263.jpg17263a.jpg17623b.jpg,然后我需要重命名带有产品代码的CID图像以在网站上工作,以及添加相关的 a b c后面的字母,如果有多个图像我有文件CID文件在左侧.csv列,但我没有一个简单的方法将两个代码匹配在一起,因为有这么多。

我想知道是否有脚本编写ruby的方式来搜索文件名中的相关cid代码并将其重命名为相关产品编号?

下面是到我下载了脚本的链接,我有那么它与新的Ruby

http://roguepenguin.net/PFID2SKU/

一些文件名称下面列出的作品改成了只需要5位数字代码和AB或c等,如果有这种产品的多个图像

15144 a.jpg 
15144 inset a.jpg 
15144 inset b.jpg 
15144 inset c.jpg 
15144 inset d.jpg 
15144 inset e.jpg 
15144 inset f.jpg 
15144 inset g.jpg 
15144 inset h.jpg 
15144 inset i.jpg 
15155.jpg 
15178.jpg 
15233 a.jpg 
15233 b.jpg 
15233 box.jpg 
15270.jpg 
15321.jpg 
15333 a.jpg 
15333.jpg 
15414 2010.jpg 
15458 - 2632.jpg 

对不起,这个星期早些时候乱用后

希望你能理解。

感谢您的帮助。

+0

一小段代码胜过千言万语。 – miku

+1

这是真的错过了太多的信息可以负责。也许可以使用'File.rename'作为起点。 – tadman

+0

开始 File.open(csv_file_name,“r +”)do | file | file.each_line do | line |如果tokens.size == 2 pfid_name = tokens [0] .strip sku_name = tokens [1]。 –

回答

11

Ruby文件类有一个rename()方法。因此,您可以搜索要重命名的文件,然后使用File.rename()方法重命名所有文件。

例子:

product_name = "Some String"; 
id = 0; 

filenames = Dir.glob("*.jpg") 

filenames.each do |filename| 
    File.rename(filename, product_name + id.to_s) 
    id += 1 
end 
1

下面是你一个小趣闻。也许它会帮助。 http://rtdptech.com/2010/08/ruby-shell-script-to-rename-files-in-a-folder/

因为我想使用rdoc/ri文件 来做一些小例子,所以我使用了类似这样的东西。我复制了一些目录到另一个位置并希望将扩展名从* .RI改为* .RB,所以我可以把我的可运行Ruby代码英寸

这里的命令行版本

$ ruby -e "Dir.glob('*/*.ri').each {|i| File.rename(i, i.gsub('ri', 'rb'))}" 

这里是文件版本

Dir.glob('*/*.ri').each {|i| File.rename(i, i.gsub('ri', 'rb'))}