2013-02-08 116 views
1

我正在將所有bash腳本遷移到Ruby中。我發現Ruby很棒,但是我遇到了一個小問題。我正在嘗試移動此腳本(基本上查找所有日期早於x小時的日誌並處理它們)。在bash腳本看起來像這樣使用Ruby查找超過X小時的文件

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

當然,我可以循環通過所有的文件,手動將他們File.mtime然後找出的人。不過,我想了解是否有一個更清潔,更有效的方法。

回答

8

一個內膽:

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/') } 
+1

差不多我在想什麼。雖然鏈方法看起來很酷 – Nitin 2013-02-09 00:03:18