Есть ли способ получить дату, измененную из команд Net :: SSH или NET :: SFTP в ruby? - PullRequest
3 голосов
/ 21 апреля 2010

Есть ли простой способ получить дату изменения файла с помощью Net :: SFTP?

Было бы неплохо сделать это:

Net::SFTP.start('some_server') do |sftp|
  sftp.dir.glob('*').each do |file|
    puts file.mtime
  end
end

Но это невозможно (насколько мне известно).

Бернс.

1 Ответ

9 голосов
/ 21 апреля 2010

Ваш пример кода почти там, вам просто нужно использовать file.attributes.mtime там, где у вас было file.mtime.

Кроме того, я предполагаю, что код в вопросе был только примером, но для его выполнения вам также необходимо передать имя пользователя и пароль в start и передать путь, а также шаблон в glob. Таким рабочим примером будет:

Net::SFTP.start('some_server', 'mike', :password => 'secret') do |sftp|
  sftp.dir.glob('.', '*').each do |file|
    puts file.attributes.mtime
  end
end

Значение, возвращаемое mtime, будет количеством секунд с начала эпохи, поэтому вы можете передать его в Time.at , чтобы преобразовать его в Time объект.

Если вам интересно, другие атрибуты, доступные таким же образом:

  • permissions
  • uid
  • gid
  • size
  • atime (время последнего доступа)
...