কীভাবে পিঁপড়া ব্যবহার করে একটি ডিরেক্টরি কপি করবেন


102

আমি copydirডিরেক্টরি গাছের অনুলিপি ব্যবহার করেছি তবে এটি অবনতিযুক্ত। আমার ডিরেক্টরিতে কিছু উপ-ডিরেক্টরি রয়েছে এবং এর মধ্যে কয়েকটিতে ফাইল রয়েছে এবং কিছুতে আরও সাব-ডিরেক্টরি রয়েছে।

আমি কীভাবে পুরো গাছটি অনুলিপি করতে পারি?


5
মনে হচ্ছে আপনি পুনরাবৃত্তির অনুলিপিটি করতে চান। এবং এটিই যে সমাধানটি সর্বজনীন দিয়েছে। প্রশ্নটিতে "পুনরাবৃত্ত" শব্দটি উপস্থিত হলে আরও বেশি লোক এই প্রশ্নটি পেতে পারে।
জেসন

উত্তর:


116
<copy todir="${dest.dir}" >  
    <fileset dir="${src.dir}" includes="**"/>  
</copy> 

বিশ্বাস করুন যে আপনি যা চান তা করবে ... (পুনরাবৃত্ত অনুলিপিটি সম্পন্ন)


4
স্পষ্টতই, includesযখন আপনি সমস্ত কিছু চান তখন প্রয়োজনীয় নয় (ব্যবহারকারী s1n দ্বারা উত্তর দেখুন )
অ্যাবেল

41
এটি {src.dir of এর বিষয়বস্তু অনুলিপি করে, তবে আসল ডিরেক্টরি নয়
cmcginty

অনুলিপিগুলি করা হয়নি তবে এটির বিষয়বস্তু।
এ-লাইভ

যেহেতু আপনি স্বীকৃত উত্তর, আপনি এটি সঠিক উত্তর হতে পারে (এরীর উত্তর সঠিক) ;-)
খ্রিস্টান ফ্রাইস

আমি সংগ্রহ করেছি যে এসও এর ধারণাটি সম্মিলিত ক্রিউশন, যার কারণে যে কেউ অন্য কারও প্রশ্ন সম্পাদনা করতে পারে (যদিও আপনাকে সম্পাদনা পর্যালোচনাটি এড়াতে প্রচুর রেপ দরকার)।
অ্যান্ড্রু স্পেন্সার

120

ডিরেক্টরি নিজেই কন্টেন্ট অনুলিপি।

<copy todir="${dest.dir}" >  
    <fileset dir="${src.dir.parent}">  
        <include name="${src.dir}/**"/>
    </fileset>
</copy>

দ্রষ্টব্য: $ rc src.dir} $ rc src.dir.parent to এর সাথে সম্পর্কিত, এবং একটি সম্পূর্ণ পাথ নয়


12
এটি সঠিক উত্তর হওয়া উচিত। অন্য উত্তরটি হ'ল পিঁপড়া ব্যবহার করে কোনও ডিরেক্টরিতে কীভাবে অনুলিপি করবেন "এই প্রশ্নের জন্য। একটি সূক্ষ্ম পার্থক্য আছে।
সেমিগ্রিন্টি

"এটির সঠিক উত্তর হওয়া উচিত": অবশ্যই, যখন আপনি প্রত্যাশিত পথের নামগুলি দিয়ে আপনার সংস্থানগুলি লোড করতে পারবেন না তখন তফাতটি এত সূক্ষ্ম নয়।
জিম পিভারস্কি

4
এটি পিপড়া 1.8 এর জন্য কাজ করে না, মনে হয় কিছুই ঘটেনি।
সিসিসি

8
$ {Src.dir} নিশ্চিত @CCC হয় আপেক্ষিক $ {src.dir.parent}, এবং একটি পূর্ণ পথে
মাইক Demenok

খুব বিভ্রান্তিকর কিভাবে x.parentহতে পারে আবার নাও অনুমিত হয় parentএর x... -_-
nonchip

25

আপনাকে কেবল ডিরেক্টরিটি নির্দিষ্ট করতে হবে (এতে সম্পত্তির অন্তর্ভুক্ত রয়েছে):

<copy todir="../new/dir">
    <fileset dir="src_dir"/>
</copy>

আরও বিশদ এবং উদাহরণের জন্য ম্যানুয়ালটি দেখুন ।


13
@ s1n এই আদেশটি কেবলমাত্র src_dir এর সমস্ত বিষয়বস্তু অনুলিপি করে ../new/dir এবং src_dir নয়। কীভাবে আমরা অন্য স্থানে src_dir (ডিরেক্টরি) অনুলিপি করব?
পিপালায়ণ নায়ক


2

একটি সূক্ষ্ম বিন্দু: পিঁপড়া কেবলমাত্র ডিরেক্টরিগুলি অনুলিপি করবে যদি উত্স ফাইলগুলি গন্তব্য ফাইলগুলির চেয়ে নতুন হয়। [1] আমার ক্ষেত্রে, সাব-ডায়ারগুলি অনুলিপি করা হচ্ছে না (আমি ক্রিয়াপদ = "সত্য" ব্যবহার করছি), কারণ কোনও পরিবর্তন হয়নি এবং তারা ইতিমধ্যে গন্তব্যে ছিল। আপনি এটিকে জোর করার জন্য "ওভাররাইট" ব্যবহার করতে পারেন, বা আপনার উত্স সাব-ডায়ারের কয়েকটি ফাইল স্পর্শ করতে পারেন।


2

আমি আমার বিল্ড.এক্সএমএল ফাইলের নীচে কোড স্নিপেটের মতো ডিরেক্টরিগুলির মধ্যে স্বতন্ত্র জার ফাইলগুলি অনুলিপি করতে ট্যাগগুলি অন্তর্ভুক্ত ব্যবহার করেছি।

<target name="devInstall" depends="generateXsl" description="testing">
<copy flatten="true" todir="${test}/WEB-INF/lib" overwrite="${overwrite}">
                <fileset refid="buildJars"/>
                <fileset dir="lib">
                    <include name="commons-collections-*.jar"/>
                    <include name="commons-io-*.jar"/>              
                    <include name="kodo/*.jar"/>
                    <include name="mail*.jar"/>    
                    <include name="activation*.jar"/>               
                    <include name="guava*.jar"/>
                    <include name="jna*.jar"/>                          
                </fileset>          
            </copy>
</target>

1

এখানে উদাহরণ থেকে , আপনি অনুলিপি টাস্ক ব্যবহার করে একটি সাধারণ পিঁপড়া ফাইল লিখতে পারেন।

<project name="MyProject" default="copy" basedir=".">
    <target name="copy">
        <copy todir="./new/dir">
           <fileset dir="src_dir"/>
        </copy>
    </target>
</project>

এটির ভিতরে সমস্ত কিছু অনুলিপি করা উচিত src_dir(এটি বাদ দিয়ে) new/dir


6
এটি কেবল ডিরেক্টরিটির বিষয়বস্তু অনুলিপি করছে। সরাসরি সহ বিষয়বস্তু না। :(
ঘোস্টকোডার

1

সমস্ত সাবফোল্ডারগুলি অনুলিপি করতে আমি আরও জেনেরিক প্যাটার্ন যুক্ত করছি।

<copy todir="${dest.dir}" >  
  <fileset dir="${src.dir}" includes="**/*"/>
</copy>

বিশদ জন্য প্যাটার্ন দেখুন ।


1

আর একটি পিঁপড়া টাস্ক কপিডির । এখানে মূল অংশটি হ'ল ডিরেক্টরি ডিরেক্টরিটির পরে আপনি যে ডিরেক্টরিটি অনুলিপি করতে চান তার নাম অন্তর্ভুক্ত করা। সাব ডিরেক্টরি এবং ফাইলগুলি স্বয়ংক্রিয়ভাবে অনুলিপি করা হবে।

<target name="-post-jar">
    <copydir src="config" dest="${dist.dir}/config/"/>
</target>

আপনার লিঙ্ক থেকে: এই কাজটি হ্রাস করা হয়েছে। পরিবর্তে অনুলিপি টাস্ক ব্যবহার করুন।
জিম

0

এই কোডটি ফোল্ডারটির পাশাপাশি এর সামগ্রীগুলিও অনুলিপি করা উচিত। কোনও ম্যানুয়াল পাথ পার্সিং করা এড়াতে এটি বেসনাম টাস্কটিও ব্যবহার করে।

<project name="Build" default="doCopy">
  <property name="source.dir" value="SourceDirPathGoesHere"/>
  <property name="dest.dir" value="DestinationDirPathGoesHere"/>
  <target name="doCopy">
    <basename property="source.dir.base.name" file="${source.dir}"/>
    <copy todir="${dest.dir}">
      <fileset dir="${source.dir}/.." includes="${source.dir.base.name}/**"/>
    </copy>
  </target>
</project>

0

আমি অবশেষে নিম্নলিখিত কোড ব্যবহার করে অনুলিপি করেছি

<copy todir="${root.dir}/dist/src">  
                <fileset dir="${root.dir}/build/src" includes="**"/>  
            </copy>

এটি ডিআরসি থেকে বিল্ড করার জন্য এসসিআর ফোল্ডারটি অনুলিপি করবে।

আশা করি এটি কাউকে সাহায্য করবে।


এটি আক্ষরিকভাবে বলেছে যে এটি অন্য উপায়ে অনুলিপি করবে যদিও: পি
ননচিপ 3'18
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.