2012-12-21 9 views
5

Ich arbeite an der Konvertierung eines KornShell (Ksh) -Skript in Groovy. Ich habe den folgenden Find-Befehl - was wäre ein Groovy-Weg, etwas ähnliches zu tun, ohne auf Unix-Befehle angewiesen zu sein (ich brauche das plattformübergreifend, damit ich kein "bla bla" .execute()) machen kann.Unix-FIND-Befehl in Groovy

find <source directory> -name <file pattern> -type f -mtime +140 -level 0 

Dieser Code sucht nach allen Dateien im Quellverzeichnis (keine subdirs), der ein Dateimuster und sind älter als 140 Tage entsprechen.

Antwort

6

Groovy bietet einige Methoden zum Durchsuchen von Verzeichnissen: File.eachFile für den -level 0 Fall, oder File.eachFileRecurse für den allgemeinen Fall. Beispiel:

use(groovy.time.TimeCategory) { 
    new File(".").eachFile { file -> 
     if (file.isFile() && 
      file.lastModified() < (new Date() - 140.days).time) { 
      println file 
     } 
    } 
} 
+2

oder wenn Sie Ebene tun sind 0, könnten Sie tun File.listFiles() und folgen Sie, dass mit findAll bekommen nur die alten Dateien in eine Sammlung –

+1

Der Fragesteller hat wollte auch Namen gegen ein Muster entsprechen das muss eachFileMatch() wie new File ('.') verwenden. eachFileMatch (~ /.*? \. JPG /) {... – JasonM1