Я очень новичок в Ruby и разветвляется мимо первых сценариев, спрашивая, что такое мой любимый цвет, и повторяет его мне. Я делаю то, что я считал относительно простой задачей, перемещая файлы и меняя имена.Добавление имен файлов в Ruby?
У меня есть куча файлов в подкаталогах, которые мне нужно переместить в один каталог, а затем добавить имена файлов всех из них. В частности, нужно сохранить исходное имя и добавить его в конец, IE AAB701.jpg -> AAB701_01.jpg.
Мне удалось найти файлы и переместить их (возможно, неэффективно), но мне не повезло добавить имя файла. Поиск Google, stackoverflow и т. Д., Не повезло.
Это код, который у меня есть сейчас.
require 'find'
require "fileutils"
file_paths = []
Find.find('../../../Downloads') do |path|
file_paths << path if path =~ /.*\.jpg$/
end
file_paths.each do |filename|
name = File.basename('filename')
dest_folder = "../../../Desktop/Testing/"
FileUtils.cp(filename, dest_folder)
end
file_paths.each do |fullname|
append_txt = '_01'
filename = "*.jpg"
fullname = File.join(filename, append_txt)
end
Фактических дорожки довольно несущественный, но я не достаточно знаком с File.join или GSUB, чтобы выяснить, что случилось/лучше.
Ничего себе, это так намного чище. Я столкнулся с проблемой, тем не менее, в том, что он поддерживает расширение файла, а затем добавляет к нему. И.Е. - AAB701.jpg-01.jpg –
@ LukePatton извините, я забыл, что ['Файл :: basename'] (http://ruby-doc.org/core-1.9.3/File.html#method-c-basename) немного смешно. Для этого требуется второй аргумент, описывающий расширение полосы. Я обновил ответ. – dbenhur
Собственно исправил это сам. Использовал аргумент file.basename, чтобы исключить расширение. РЕДАКТИРОВАТЬ: Просто увидел ваше дополнение, извините. Я добавил «.jpg» вместо ext, но ext кажется, что лучше адаптировать скрипт. –