Borrar ficheros de un directorio con Groovy dado un patron

Vamos a ver como hacerlo tanto con una búsqueda recursiva como con una búsqueda directa por el patrón recibido.
def directoryName = System.getProperty('java.io.tmpdir')
println "reading files from directory '$directoryName'"
println "Remove pattern files in ${directoryName} and its subdirectories..." v def directory = new File(directoryName)
//def classPattern = ~/.*\.class/
def deletePattern = ~/.*wrongUsers.*.txt$/
// de manera recursiva directory.eachFileRecurse(groovy.io.FileType.FILES)
{ file ->
if (file ==~ deletePattern)
{
println "Deleting ${file}..."
file.delete()
}
}
buscando directamente por el patrón
deletePattern = ~/.*okUsers.*.txt$/
directory.eachFileMatch(deletePattern)
{ file ->
println "Deleting ${file}..."
file.delete()
}
También le podemos dar el patrón completo y luego borrar recursivamente con una closure:
def deletePattern = ~/.*wrongUsers.*.txt|.*okUsers.*.txt$/
// Create a ref for closure
def delClos
// Define closure
delClos = {
println "Dir ${it.canonicalPath}";
it.eachDir( delClos );
it.eachFileMatch (deletePattern){
println "delete File ${it.canonicalPath}";
it.delete()
}
}
// Apply closure
delClos( new File(directoryName) )
así de facil

Comentarios