使用Ruby查找超过X小时的文件

Nit*_*tin 1 ruby shell

我正在将所有bash脚本迁移到Ruby.我发现Ruby很棒但是我遇到了一个小问题.我试图移动这个脚本(基本上找到超过x小时的所有日志并处理它们).Bash脚本看起来像这样

find /var/log/myservice.log.* -mmin -120  -exec cp {} /home/myhomedir/mylogs/ \;
Run Code Online (Sandbox Code Playgroud)

当然,我可以遍历所有文件,手动应用File.mtime它们然后识别它们.但是我想知道是否有一个更清洁,一个班轮来有效地做到这一点.

Uni*_*key 9

一个班轮:

require 'fileutils'; Dir.glob("/var/log/myservice.log.*").each{|f| FileUtils.cp(f, '/home/myhomedir/mylogs/') if File.mtime(f) < (Time.now - (60*120)) }
Run Code Online (Sandbox Code Playgroud)

虽然我更喜欢它拼写更多:

require 'fileutils'
Dir.glob("/var/log/myservice.log.*").
  select{|f| File.mtime(f) < (Time.now - (60*120)) }.
  each{|f| FileUtils.cp(f, '/home/myhomedir/mylogs/') }
Run Code Online (Sandbox Code Playgroud)