আপনি যা লিখেছেন তা নিউলাইন দ্বারা পৃথক করা ফাইলের নামের (এবং পাথ) এর তালিকা পাঠায় rm, কিন্তু আরএম জানেন না that ইনপুটটি কী করবে। এটি কেবল কমান্ড লাইন প্যারামিটারের প্রত্যাশা করে।
xargs ইনপুট নেয়, সাধারণত নিউলাইন দ্বারা পৃথক করে এবং কমান্ড লাইনে রাখে, তাই xargs যুক্ত করা আপনার কাজটি করে:
find . -name .svn | xargs rm -fr
xargsএটি যথেষ্ট বুদ্ধিমান যে এটি কেবল যতটা আর্গুমেন্ট rmগ্রহণ করতে পারে তেমন পাস করবে । সুতরাং, আপনার যদি মিলিয়ন ফাইল থাকে তবে এটি rm1,000,000 / 65,000 বার চলতে পারে (যদি আপনার শেলটি কমান্ড লাইনে 65,002 টি আর্গুমেন্ট গ্রহণ করতে পারে-65k ফাইল + 1 -fr} এর জন্য rm + 1 এর জন্য)।
ব্যক্তিরা যেমন দক্ষতার সাথে উল্লেখ করেছেন, নিম্নলিখিতগুলিও কাজ করে:
find . -name .svn -exec rm -rf {} \;
find . -depth -name .svn -exec rm -fr {} \;
find . -type d -name .svn -print0|xargs -0 rm -rf
প্রথম দুটি -execফর্ম উভয়ই rmপ্রতিটি ফোল্ডার মোছার জন্য কল করে , সুতরাং আপনার যদি 1,000,000 ফোল্ডার থাকে rmতবে 1,000,000 বার আহ্বান করা হবে। এটি অবশ্যই আদর্শের চেয়ে কম। এর আরও নতুন বাস্তবায়ন rmআপনাকে কমান্ডটি এমন একটি +ইঙ্গিত দিয়ে শেষ করতে দেয় যা rmযথাসম্ভব আর্গুমেন্ট গ্রহণ করবে:
find . -name .svn -exec rm -rf {} +
সর্বশেষ সন্ধান / xargs সংস্করণটি মুদ্রণ0 ব্যবহার করে, যা আউটপুট তৈরি করে যা নিউলাইনের \0পরিবর্তে টার্মিনেটর হিসাবে ব্যবহার করে find যেহেতু পসিএক্স সিস্টেমগুলি কোনও অক্ষরকে \0ফাইল ফাইলের অনুমতি দেয় তবে আর্গুমেন্টগুলি সঠিকভাবে পাস হয়েছে rmবা অ্যাপ্লিকেশনটি কার্যকর হয়েছে তা নিশ্চিত করার পক্ষে এটি নিরাপদতম উপায় ।
উপরন্তু, একটি এর -execdirযে চালানো হবে rmডিরেক্টরির যা ফাইল, পাওয়া যায়নি বরং বেস ডিরেক্টরি চেয়ে থেকে এবং একটি -depthযে গভীরতা প্রথম শুরু হবে।