2017-02-13 3 views
0

Als Teil der Gradle löschen Aufgabe möchte ich alle TAR-Dateien beginnend mit CSW und endend mit .tar.gz aus einem Verzeichnis löschen. Wie kann ich es mit Groovy erreichen?Regex Verzeichnis in Groovy

habe ich versucht, so etwas wie unten:

delete (file('delivery/').eachDirMatch(~/^CSW$.*.gz/)) 

Aber es funktioniert nicht. Wie verwende ich den Regex in Groovy? Im Vergleich zu Shell ist es so etwas wie rm -rf CSW*.tar.gz

+0

Möchten Sie ein Verzeichnis suchen? Das klingt wie Dateiabgleich –

+0

Das Verzeichnis, das ich übereinstimmen möchte, befindet sich tatsächlich in dem Verzeichnis namens 'delivery' –

Antwort

2

Ich werde mit einer Gradle-Lösung antworten, wie Sie in Ihrer Frage auf Gradle beziehen. Etwas entlang der Linien von:

myTask(type: Delete) { 
    delete fileTree(dir: 'delivery' , include: '**/CSW*.tar.gz') 
} 

wo die delete Methode Rufkonfiguration Zeit ist und konfiguriert, was wird gelöscht werden, wenn die Aufgabe schließlich läuft. Für Details könnte es sich lohnen, durch die gradle docs on the fileTree method zu schauen.

Wenn Sie rein groovy zu bleiben brauchen Sie etwas entlang der Linien von tun:

new AntBuilder().fileScanner { 
    fileset(dir: 'delivery', includes: '**/CSW*.tar.gz') 
}.each { File f -> 
    f.delete() 
} 

Wenn dieser Code in einem gradle Skript lebt würde ich mit der Option kleben empfehlen ein, da sie die gradle behält up-to -Datumsüberprüfung und passt gut in den Maßstab configuration vs execution time pattern.

Wenn Sie wirklich Regex im Gegensatz zu den oben genannten Stilmuster gehen wollen, können Sie das sicherlich tun, obwohl ich persönlich nicht viel von Ihren Anforderungen sehen würde.