диапазон на основе даты, когда не в течение месяца не работает (рубин) - PullRequest
1 голос
/ 12 октября 2010

Я хочу найти файлы старше x дней ( время и выходные не учитываются при расчете возраста файла ).Мне нужно использовать только рабочие дни.

Мой сценарий работает, но только если даты из диапазона находятся в одном и том же месяце.В противном случае размер диапазона равен 0.

Я запускаю скрипт через ruby ​​1.8.7 (2008-08-11 patchlevel 72) [x86_64-linux]

Dir['*.gdb'].each { |db|
  puts db
  puts ((Date.strptime(File.mtime(db).strftime("%Y-%m-%d")))..(Date.today)).select {|d| (1..5).include?(d.wday) }.size

}

любая идея, как я могузаставить это работать?

Ответы [ 2 ]

1 голос
/ 12 октября 2010

Чтобы найти файлы старше X дней, например, 7 дней

x=7 
t=Time.now
days=t - (x * 86400)
Dir["*.gdb"].each do |db|
  if File.mtime(db)  < days
     puts db
  end
end

исключить выходные

t=Time.now  # get current date 
days=t - (7 * 86400)  # get date 7 days before
Dir["*.gdb"].each do |db| 
  wd=File.mtime(db).wday    # get the wday of file. 1 (monday), ... 5 (friday)
  if File.mtime(db)  < days and wd.between?(1,5)
     # File.mtime(db)  < days means get files older than 7 days
     # at the same time check the wday of the file whether they are in 1..5 range
     # using wd.between?(1,5)
     puts db
  end
end
0 голосов
/ 05 мая 2011

итоговый код, который удаляет все файлы из

  • настроек ['path']
  • , которые старше настроек ['days'] - выходные дни не учитываются
  • и не находятся в массиве настроек ['exclude']

-

require 'date'

  settings = {
    'radek' => { 'path' => '/var/lib/firebird/data/radek*.gdb','days' => '3','exclude'=>['radek_rft.gdb','radek_tmp.gdb','radek_test.gdb','radek_cmapping.gdb'] }
  }

  settings.each_value { |user|
    user['exclude'].collect! {|file| file.downcase }
    Dir[user['path']].each { |db|
      old = ( (Date.strptime(File.mtime(db).strftime("%Y-%m-%d")))..(Date.today)).select {|d| (1..5).include?(d.wday) }.size - 1
      if (old.to_i >= user['days'].to_i) and not(user['exclude'].include?(File.basename(db))) then output=  %x[rm #{db}]   end
    }
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...