【问题标题】:Unix FIND command in GroovyGroovy 中的 Unix FIND 命令
【发布时间】:2012-12-09 10:00:00
【问题描述】:

我正在将 KornShell (ksh) 脚本转换为 Groovy。我有以下 Find 命令 - 在不依赖 Unix 命令的情况下,什么是 Groovy 方式来做类似的事情(我需要它来跨平台工作,所以我不能做一个“废话”.execute())。

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

此代码搜索源目录(无子目录)中与文件模式匹配且超过 140 天的所有文件。

【问题讨论】:

    标签: unix groovy scripting ksh groovy-console


    【解决方案1】:

    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
            }
        }
    }
    

    【讨论】:

    • 或者如果你在做第 0 级,你可以做 File.listFiles() 然后用 findAll 把旧文件放到一个集合中
    • 提问者还想将名称与需要使用 eachFileMatch() 的模式进行匹配,例如 new File('.').eachFileMatch(~/.*?\.JPG/) {.. .
    猜你喜欢
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 2012-01-28
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 2010-10-01
    相关资源
    最近更新 更多