2012-12-21 28 views
5

में यूनिक्स FIND कमांड मैं एक कॉर्नशेल (ksh) स्क्रिप्ट को ग्रोवी में परिवर्तित करने पर काम कर रहा हूं। मेरे पास निम्न ढूँढें कमांड है - यूनिक्स कमांड पर भरोसा किए बिना कुछ ऐसा करने के लिए ग्रोवी तरीका क्या होगा (मुझे क्रॉस-प्लेटफ़ॉर्म पर काम करने की आवश्यकता है, इसलिए मैं "blah blah" नहीं कर सकता .execute())।ग्रोवी

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

स्रोत निर्देशिका में सभी फ़ाइलों (कोई उपनिर्देशिका) है कि एक फ़ाइल स्वरूप से मेल खाते और 140 से अधिक उम्र के दिन हैं के लिए इस कोड को खोज करता है।

उत्तर

6

ग्रोवी -level 0 मामले के लिए File.eachFile, या सामान्य मामले के लिए File.eachFileRecurse के लिए निर्देशिका के माध्यम से खोजने के लिए कुछ विधियां प्रदान करता है। उदाहरण:

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

या यदि आप स्तर 0 कर रहे हैं, आप File.listFiles (कर सकता है) और कहा कि findAll साथ सिर्फ एक संग्रह –

+1

प्रश्नकर्ता में वर्ष फ़ाइलें प्राप्त करने का पालन भी एक पैटर्न के खिलाफ नाम से मेल करना चाहता था जिसे प्रत्येक फ़ाइल ('।') जैसे प्रत्येक फ़ाइल()।) का उपयोग करने की आवश्यकता है। प्रत्येक फ़ाइलमैच (~ /.*? \। जेपीजी /) {... – JasonM1