Ruby重命名文件

时间:2011-08-12 14:47:30

标签: ruby rename

我有一个脚本可以重命名.csv文件中的文件,这个文件工作正常,但我希望对它进行更多编辑,以便它能帮到我更多。

场景是我有8,000个图像有CID代码,其中一些有CID代码,其中一些有额外的文本,并且是同一个CID ID下的多个图像,即17263.jpg 17263a.jpg17623b.jpg,然后我需要使用产品代码重命名CID图像以在网站上工作,以及添加相关的 a b c 之后的字母,如果有多个图像我在.csv列的左边有文件CID文件,但我没有一个简单的方法将两个代码放在一起,因为有这样的许多。

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

这是我下载脚本的链接,我已经更改了它,因此它适用于新的ruby

http://roguepenguin.net/PFID2SKU/

如果此产品有多个图像,下面列出的一些文件名只需要5位数代码和b或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

对不起本周早些时候的帖子搞砸了

希望你能理解。

感谢您的帮助。

2 个答案:

答案 0 :(得分: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 :(得分:1)

这对你来说有点小窍门。也许它会有所帮助。 http://rtdptech.com/2010/08/ruby-shell-script-to-rename-files-in-a-folder/

我使用这样的东西快速,因为我想使用rdoc / ri文件 举几个例子。我将一些目录复制到另一个位置,并希望将扩展名从* .ri更改为* .rb,这样我就可以将我的runnable 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'))}