2012-12-21 10 views
5

Sto lavorando alla conversione di uno script KornShell (ksh) in Groovy. Ho il seguente comando Find - quale sarebbe un modo Groovy di fare qualcosa di simile, senza fare affidamento sui comandi Unix (ho bisogno che funzioni su più piattaforme, quindi non posso fare un "blah blah" .execute()).Comando UNIX FIND in Groovy

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

Questo codice cerca tutti i file nella directory di origine (non sottodirectory) che corrispondono a un modello di file e sono più vecchi di 140 giorni.

risposta

6

Groovy fornisce alcuni metodi per la ricerca nelle directory: File.eachFile per il caso -level 0 o File.eachFileRecurse per il caso generale. Esempio:

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

o se si sta facendo a livello 0, si potrebbe fare File.listFiles() e seguire quello con findAll per ottenere solo i vecchi file in una collezione –

+1

Il richiedente ha anche voluto abbinare nome nei confronti di un modello che deve usare eachFileMatch() come nuovo File ('.'). eachFileMatch (~ /.*? \. JPG /) {... – JasonM1