Rekurencyjne przetwarzanie drzewa katalogów
Często okazuje się że istnieje potrzeba wykonania jakiejś operacji na wszystkich zbiorach które znajdują się na dysku i umieszczone są w różnych katalogach,  jako elementy potomne mające wspólny korzeń. Wtedy wykorzystać można bardzo wygodny mechanizm przetwarzania rekurencyjnego. Jako przykład niech posłuży skrypt, który z drzewa katalogów usuwa wszystkie katalogi (wraz z zawartością) .svn zawierające pliki związane z obsługą svn.
import org.apache.commons.io.FileUtils
def basedir="kat1\\kat2" //SCIEZKA_DO_ROOT
outputLog=new File("output.log").newWriter("UTF-8", false)
dir = new File(basedir)
fileList=[]
dir.eachFileRecurse{ f ->     
    if((f.name=='.svn')&&(f.isDirectory())&&(f.exists())){        
        fileList.add(f)        
    }
    }
    
for(mf in fileList){
    outputLog.writeLine( "Usunieto: "+mf.canonicalPath)
    FileUtils.deleteDirectory(mf)
}
outputLog.writeLine( "Calkowita liczba usunietych:"+fileList.size())
outputLog.close()
Do poprawnego działania konieczne jest sciągnięcie biblioteki commons.io.*, a następnie umieszczenie pliku commons-io-xxxxx.jar w katalogu GROOVY_HOME\lib
 
 
