Как я могу получить путь к последнему созданному файлу в каталоге, используя Ruby? - PullRequest
9 голосов
/ 02 июля 2010

Как я могу получить путь к последнему созданному файлу в каталоге, используя Ruby?

Ответы [ 5 ]

13 голосов
/ 02 июля 2010

Я думаю, что это довольно кратко:

Dir.glob(File.join(path, '*.*')).max { |a,b| File.ctime(a) <=> File.ctime(b) }
2 голосов
/ 02 июля 2010
Dir.entries("testdir").reject{|f| f== '.' || f=='..'}.sort_by{|f| File.ctime(f)}.last
1 голос
/ 02 июля 2010

вы можете использовать класс dir для вывода списка всех файлов и проверки ctime или atime файлового объекта (ctime - это время, когда файл был изменен в последний раз, atime - это время, когда к файлу обращались в последний раз)

Dir.foreach("testdir") {|f| puts File.ctime(x) }
0 голосов
/ 01 ноября 2013

Я добавил этот метод в мой supermanpatches.rb файл внутри railsapp/config/initializers, чтобы открыть мою последнюю сгенерированную миграцию (в TextMate) без необходимости копировать и вставлять имя файла или что-то в этом роде:

def latestmigration
  `mate db/migrate/#{Dir.glob(File.join(Rails.root, 'db', 'migrate', '*.rb')).max { |a,b| File.ctime(a) <=> File.ctime(b)} }`
end

‡: (к сведению, для начинающих ruby ​​/ rails, код инициализатора вездесущ и не требует, чтобы область видимости имени файла была доступна из любого места внутри rails)

ПРИМЕЧАНИЕ. В Windows (или Mac) вы можете использовать *Команда 1008 * вместо команды mate и sublimetext также могут быть настроены для этого, я думаю, это называется командой subl.mate & subl не работает по умолчанию, хотя я думаю, поэтому сначала нужно настроить это

0 голосов
/ 06 августа 2012

Dir.glob (root_path + ". "). Map {| file |[Файл, File.ctime (файл)]}. Max.first

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...