2015-03-25 3 views
1

У меня очень большая файловая система со структурой папок, которая может быть 4 уровня глубокой. У меня есть файл (т. Е. Test.log), который может быть где угодно в этой структуре папок. Вместо того, чтобы рекурсивно перемещаться по всей структуре папок, я хочу применить некоторый выбор и только папки поиска, которые были изменены за последние 4 часа. Как использовать траверсу Groovy для выполнения такой операции? БлагодаряНайти файл в каталогах, которые были изменены за последний час

+0

есть ли мой ответ работа? Если все в порядке, пожалуйста, примите это. – Opal

+0

Извините за задержку ... пытался реализовать решение. Проблема, которую я испытываю, заключается в том, что последний модифицированный атрибут в файле - это длинный тип данных. У меня возникают проблемы с преобразованием TimeCategory в длинный тип данных, чтобы он мог использоваться при сравнении. – JBDenver

+0

Я отредактировал ответ. Используйте «время» на дату, чтобы сравнить его с 'lastModified()'. – Opal

ответ

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.

Смежные вопросы