2012-12-21 87 views
5

我正在將KornShell(ksh)腳本轉換爲Groovy。我有下面的Find命令 - 什麼是Groovy的方式來做類似的事情,而不依賴於Unix命令(我需要這個工作跨平臺,所以我不能做一個「等等」.execute())。Groovy中的Unix FIND命令

find <source directory> -name <file pattern> -type f -mtime +140 -level 0 

這在源目錄中匹配文件模式,是老年人超過140天即所有文件(沒有子目錄)代碼搜索。

回答

6

Groovy提供了一些通過目錄搜索的方法:File.eachFile-level 0的情況,或File.eachFileRecurse爲一般情況。例如:

use(groovy.time.TimeCategory) { 
    new File(".").eachFile { file -> 
     if (file.isFile() && 
      file.lastModified() < (new Date() - 140.days).time) { 
      println file 
     } 
    } 
} 
+2

或者如果你正在做0級,你可以做File.listFiles()並遵循的findAll只得到了舊文件到一個集合 –

+1

提問者也想阻止圖形匹配的名字需要使用eachFileMatch(),如新的File('。')。eachFileMatch(〜/.*?\。JPG /){... – JasonM1