2010-03-05 11 views
29

विंडोज़ के तहत आर रन में किए गए एक बड़े कार्य के हिस्से के रूप में, मैं चयनित फ़ाइलों को निर्देशिकाओं के बीच कॉपी करना चाहता हूं। क्या आर 0 के भीतर cp patha/filea*.csv pathb (अतिरिक्त मसाले के लिए वाइल्डकार्ड नोटिस) के भीतर देना संभव है?फ़ाइलों का प्रतिलिपि बनाने के लिए आर का उपयोग

उत्तर

42

मुझे नहीं लगता कि वहाँ विज्ञापन अप्रत्यक्ष तरीका (शेलिंग आउट की शर्मीली), लेकिन निम्न की तरह कुछ आमतौर पर मेरे लिए काम करता है।

flist <- list.files("patha", "^filea.+[.]csv$", full.names = TRUE) 
file.copy(flist, "pathb") 

नोट्स:

  • मैं जानबूझकर दो चरणों में विघटित, वे जोड़ा जा सकता है।
  • नियमित अभिव्यक्ति देखें: आर सही रेगेक्स का उपयोग करता है, और दो अलग-अलग तर्कों में फ़ाइल पैटर्न को पथ से अलग करता है।
  • रेगेक्स में ^ और $ (स्ट्रिंग का उत्तर/अंत) नोट करें - यह एक आम गॉचा है, क्योंकि ये वाइल्डकार्ड-प्रकार पैटर्न के लिए निहित हैं, लेकिन रेगेक्स के साथ आवश्यक है (शायद कुछ फ़ाइल नाम जो वाइल्डकार्ड पैटर्न से मेल खाते हैं लेकिन अतिरिक्त पाठ के साथ शुरू और/या अंत भी चुना जा सकता है)।
  • विंडोज़ दुनिया में, लोग आमतौर पर ignore.case = TRUE तर्क list.files पर तर्क देते हैं, इस तथ्य को अनुकरण करने के लिए कि निर्देशिका खोज इस ओएस के साथ असंवेदनशील है।
  • आर glob2rx() फ़ंक्शन वाइल्डकार्ड पैटर्न को नियमित अभिव्यक्तियों में परिवर्तित करने का एक सुविधाजनक तरीका प्रदान करता है। उदाहरण के लिए fpattern = glob2rx('filea*.csv') एक अलग लेकिन समकक्ष regex देता है।
+1

दोनों के लिए अजीब लगता है कि पैटर्न'^^ filea। + [।] Csv "' होना चाहिए। – Marek

+0

@Marek: ठीक है आप हैं! इसके अलावा, विशेष रूप से विंडोज़ दुनिया में, peopole आम तौर पर 'ignore.case = TRUE' तर्क जोड़ना चाहता है। मैं तदनुसार संपादित, धन्यवाद। – mjv

+0

आप wildcards से regexes में कनवर्ट करने के लिए glob2rx का उपयोग कर सकते हैं। –

11

आप

  • उपयोग system() एक आदेश बंद आग कर सकते हैं जैसे कि वह खोल पर था, सहित
  • उपयोग list.files() उर्फ ​​dir() ग्लोबिंग ग्लोबिंग/reg.exp अपने आप को और प्रतिलिपि मिलान फ़ाइलें करने के लिए व्यक्तिगत रूप से
  • अलग-अलग फ़ाइलों पर उपयोग file.copy mjv के जवाब में दिखाया गया है
+0

कभी भी 'डीआईआर' के बारे में नहीं सुना। यह _exactly_ 'list.files' के समान है ... – MichaelChirico

संबंधित मुद्दे

 संबंधित मुद्दे