2010-08-06 12 views
10

के साथ उपफोल्डर्स की सामग्री कॉपी करें मैं एंटी का उपयोग करके दिए गए फ़ोल्डर के सभी सबफ़ोल्डर की सामग्री कैसे कॉपी कर सकता हूं?चींटी

अर्थात मैं ऐसे फ़ोल्डर संरचना है

folder/ 
folder/sub1/1.txt 
folder/sub1/f1/1.txt 
folder/sub2/2.txt 
... 

मैं सबफ़ोल्डर के सटीक नाम पता नहीं है। और मुझे उन सभी से सामग्री को एक फ़ोल्डर में कॉपी करने की आवश्यकता है (सामग्री की संरचना को बनाए रखना, यानी सभी फ़ाइलों को फ़्लैटन का उपयोग करके एक डीआईआर में कॉपी करना समाधान नहीं है)। मुझे

newfolder/1.txt 
newfolder/1/1.txt 
newfolder/2.txt 
... 

क्या फाइलसेट सबफ़ोल्डर को इस तरह से समूहित करने की अनुमति देता है? ** शून्य या अधिक निर्देशिकाओं के लिए खड़ा है, और * का उपयोग निर्देशिका नाम के रूप में अस्वीकृत है, यानी <fileset dir="${dir}/*/" /> स्वीकार्य नहीं है।

अग्रिम धन्यवाद, यूरी

उत्तर

11
<copy toDir="newfolder"> 
    <fileset dir="folder"> 
    <include name="*/**"/> 
    <exclude name="*"/> 
    </fileset> 
    <regexpmapper from="^[^/]*/(.*)$$" to="\1" handledirsep="true"/> 
</copy> 

आप केवल अगर तुम कभी Windows में इस स्क्रिप्ट को चलाने का इरादा handledirsep निर्दिष्ट करने के लिए की जरूरत है।

+0

बहुत बहुत धन्यवाद, अलेक्जेंडर! मैंने regexp को थोड़ा बदल दिया है, क्योंकि आपके संस्करण में यह फ़्लैटन के समान काम करता है। लेकिन regexpmapper को , में बदलने के बाद मुझे जो चाहिए वह मुझे मिल गया है। क्या आप अपने उत्तर में मैपर सही कर सकते हैं? –

+0

@Yury। मुझे लगता है कि मैंने एक गहरे पर्याप्त पदानुक्रम का परीक्षण नहीं किया था। चूंकि 'to' पैरामीटर वास्तव में सरल है, इसलिए मैंने केवल 1 रेगेक्स समूह छोड़ा है, लेकिन अभिव्यक्ति की शुरुआत में' [^ /] * 'में बदल गया है। –