Ruby для переименования файлов - PullRequest
3 голосов
/ 12 августа 2011

У меня есть сценарий, который переименовывает файлы из файла .csv, этот файл работает нормально, но я хочу еще немного отредактировать его, чтобы он помог мне еще больше.

Сценарий таков: у меня 8000 изображений с кодом CID, некоторые из них имеют код CID, некоторые из них имеют дополнительный текст и являются несколькими изображениями под одним и тем же идентификатором CID, т.е. 17263.jpg 17263a.jpg, 17623b.jpg Затем мне нужно переименовать изображения CID с кодами продуктов для работы на веб-сайте, а также добавить соответствующую букву a или b или c после него. Если есть несколько изображений, у меня есть файлы CID в левой части столбца .csv, но у меня нет простого способа сопоставить два кода вместе, потому что их так много.

Мне было интересно, существует ли способ сценария ruby ​​для поиска соответствующего кода cid в имени файла и переименования его в соответствующий номер продукта?

Вот ссылка на то, где я скачал скрипт, я изменил его, чтобы он работал с новым ruby ​​

http://roguepenguin.net/PFID2SKU/

Для некоторых имен файлов, перечисленных ниже, требуется только 5-значный код и a 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 ]

11 голосов
/ 12 августа 2011

В классе файлов 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 голос
/ 14 сентября 2013

Вот маленький кусочек для вас. Может быть, это поможет. 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'))}
...