我有一个gradle任务,删除与其名称中的某个模式匹配的文件:
task deleteTempFiles(type: Delete) {
tasks['clean'].dependsOn(it)
delete fileTree(dir: '..', include: '**/tempfile*.tmp')
}
我想删除早于2小时或24小时的文件。这件事可能是2天。在gradle中最简单的方法是什么?
答案 0 :(得分:1)
task deleteTempFiles(type: Delete) {
def cutoff = new Date().minus(1); //24 hrs ago
delete fileTree (dir: '..')
.matching{ include '**/tempfile*.tmp' }
.findAll {
def filedate = new Date (it.lastModified())
filedate.before(cutoff)
}
}
答案 1 :(得分:0)
如果您正在寻找一种将删除所有文件/文件夹的解决方案,而不仅仅是“清空”文件夹,那么我想出了一些可以与其他用例重新混合的方法。
/**
* cleanCypressBuildCache will clean up build files that Cypress generates
* before running tests. These are normally self-cleaned but if the build is interrupted
* or dies during Cypress tests, then they'll remain forever. So we clean them up here.
*/
task cleanCypressBuildCache(type: Delete) {
def cypressBuildFolder = System.getenv('APPDATA') + '/Cypress/cy/production/projects'
def daysToKeepOldItems = 2
description = 'Tidy up Cypress ' + cypressBuildFolder
// Delete old folders / files
def cutoff = new Date().minus(daysToKeepOldItems);
def deleteList = []
fileTree (dir: cypressBuildFolder).visit {
def File file = it.file
def shouldBeDeleted = new Date(file.lastModified()).before(cutoff)
if (shouldBeDeleted) {
deleteList << file
}
}
// Not sure why, by `it.delete()` didn't work but `project.delete(it)` did.
deleteList.each { project.delete(it) }
}