2011-04-26 13 views
5

मेरे पास दो निर्देशिकाएं हैं, कहें, ए और बी ए में कई फाइलें हैं: ए 1, ए 2, ए 3। बी में कई फाइलें हैं: बी 1, बी 2। पहले, मैं ए बी से सभी फाइलों को कॉपी करने के लिए निम्नलिखित चींटी कार्य का उपयोगमैं निर्देशिका में फ़ाइलों को कैसे हटा सकता हूं जो किसी अन्य निर्देशिका से कॉपी की गई हैं?

<copy todir="A" verbose="true"> 
    <fileset dir="B" includes="*"/> 
</copy> 

तब मैं चरणों पूर्ववत करने के लिए, यानी एक जिसमें फ़ाइलों को हटाने चाहते बी, अर्थात् B1 और B2 से नकल कर रहे हैं । मैं लक्ष्यों को कैसे प्राप्त कर सकता हूं?

नोट: उदाहरण में फ़ाइल नामों का उपयोग सिर्फ समस्या को समझने के लिए किया जाता है। मुझे दो निर्देशिकाओं में सटीक फ़ाइल नाम नहीं पता हैं।

उत्तर

7

आपको उन फ़ाइलों के फ़ाइलसेट को पॉप्युलेट करने के लिए चयनकर्ता का उपयोग करना चाहिए जिन्हें आप हटाना चाहते हैं। Present Selector आज़माएं। यहाँ अपने उदाहरण के पूरक करने के लिए एक लक्ष्य है:

<target name="copy" > 
<copy todir="A" verbose="true"> 
    <fileset dir="B" includes="*"/> 
</copy> 
</target> 

<target name="uncopy" > 
<delete verbose="true"> 
    <fileset dir="A" > 
     <present present="both" targetdir="B"/> 
    </fileset> 
</delete> 
</target> 
+0

यह वही है जो मैं चाहता हूं। आपका बहुत बहुत धन्यवाद। – adarliu

+0

मदद करने में खुशी हुई! सामान्य अभ्यास यह है कि इसे टिक कर जवाब स्वीकार करें (http://stackoverflow.com/faq#howtoask देखें)। यह दूसरों को भविष्य में जवाब खोजने में मदद करता है। – DoctorRuss

0

जबकि मैंने पहले कभी चींटी का उपयोग नहीं किया है, संभवतः ए से कॉपी की गई फ़ाइलों में वर्तमान टाइमस्टैम्प होगा। यदि आप उस टाइमस्टैम्प के साथ बी से सभी फ़ाइलों को हटाते हैं, तो आपको केवल ए फाइलें मिलनी चाहिए, बस लिनक्स की समस्या के लिए देखें। अर्थात्, विभिन्न चीजों के लिए कई टाइमस्टैम्प, और यदि आप कॉपी करते हैं तो आप एक को बदलते हैं लेकिन दूसरों को नहीं।

यदि यह काम नहीं करेगा, तो आप उन्हें कॉपी करने से पहले एक विशेष मालिक होने के लिए ए में फ़ाइलों के मालिक को सेट कर सकते हैं। फिर बी के बाहर उस मालिक की सभी फाइलों को हटा दें। जो भी समाधान आप उपयोग करेंगे, इस तथ्य पर निर्भर करेगा कि डेटा का कुछ टुकड़ा आपकी बी फाइलों, या तो नाम या मालिक या टाइमस्टैम्प से आपकी ए फाइलों को अलग करता है। यदि कोई लगातार अंतर नहीं है, तो आपको एक बनाना होगा।

+0

ठीक है, टाइमस्टैम्प द्वारा एक से फ़ाइलों और बी भेद करता है, तो मैं फ़ाइलों को बाद में बदला काम नहीं करेगा। मैं बी से फाइलों को नाम से हटाना चाहता हूं। वैसे भी धन्यवाद। – adarliu

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

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