3

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

find /var/log/myservice.log.* -mmin -120  -exec cp {} /home/myhomedir/mylogs/ \;

当然,我可以遍历所有文件,手动应用File.mtime它们,然后识别它们。但是我想了解是否有更清洁的单线来有效地做到这一点。

4

1 回答 1

11

一个班轮:

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

虽然我希望它更详细地说明:

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/') }
于 2013-02-08T23:52:13.457 回答