Unix FIND命令在Groovy中的应用

5

我正在将一个KornShell(ksh)脚本转换为Groovy。我有以下查找命令 - 有没有一种类似的Groovy方法可以做类似的事情,而不依赖于Unix命令(我需要这个跨平台工作,所以我不能执行“blah blah”。)。

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

这段代码在源目录中(不包括子目录)搜索所有匹配文件模式且早于140天的文件。
1个回答

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将旧文件筛选出来放入集合中。 - tim_yates
1
提问者还想根据模式匹配名称,需要使用eachFileMatch()函数,例如new File('.').eachFileMatch(~/.*?.JPG/) {... - CodeMonkey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接