2015-03-25 99 views
1

我有一個非常大的文件系統,其文件夾結構可以有4層深度。我有一個文件(即test.log),可以在此文件夾結構中的任何位置。我不想以遞歸方式遍歷整個文件夾結構,而是想要應用一些選擇並只搜索在過去4小時內修改過的文件夾。我將如何使用Groovy遍歷來執行這樣的操作?由於在最近一小時內修改過的目錄中找到一個文件

+0

我的回答有用嗎?如果沒關係,請接受它。 – Opal 2015-03-26 09:10:10

+0

對不起,延遲...試圖實施解決方案。我遇到的問題是文件上的最後修改的屬性是長數據類型。我在將TimeCategory轉換爲長數據類型時遇到問題,因此可以在比較中使用它。 – JBDenver 2015-03-26 22:31:50

+0

我編輯了答案。在日期中使用'time'將其與'lastModified()'進行比較。 – Opal 2015-03-27 12:25:10

回答

0

也許這會工作(有沒有可能檢查):

import static groovy.io.FileType.* 
import static groovy.io.FileVisitResult.* 
import groovy.time.TimeCategory 

currentDate = new Date() 
use(TimeCategory) { 
    before4hours = currentDate - 4.hours 
} 

def toTravserse = new File('<SOME_DIR>') 
toTravserse.traverse(
     type   : FILES, 
     maxDepth  : 4, 
     nameFilter : ~/test.log/, 
     preDir  : { if (it.lastModified() < before4hours.time) return SKIP_SUBTREE }, 
) { println "Found: $it" } 

看一看的docs

相關問題