সাধারণত তাদের ফাইলের নাম ফাঁকা করে ফাইলগুলি সরাতে আপনাকে চালাতে হবে:
$ rm "file name"
তবে আমি যদি একাধিক ফাইল মুছতে চাই, যেমন:
$ find . -name "*.txt" | xargs rm
এটি স্থানগুলিতে থাকা ফাইলগুলি মুছবে না।
সাধারণত তাদের ফাইলের নাম ফাঁকা করে ফাইলগুলি সরাতে আপনাকে চালাতে হবে:
$ rm "file name"
তবে আমি যদি একাধিক ফাইল মুছতে চাই, যেমন:
$ find . -name "*.txt" | xargs rm
এটি স্থানগুলিতে থাকা ফাইলগুলি মুছবে না।
উত্তর:
আপনি বলতে find
এবং xargs
উভয় নাল টার্মিনেটর ব্যবহার করতে পারেন
find . -name "*.txt" -print0 | xargs -0 rm
বা (সরল) এর অন্তর্নির্মিত -delete
ক্রিয়াটি ব্যবহার করুনfind
find . -name "*.txt" -delete
বা (ধন্যবাদ @ কোস)
find . -name "*.txt" -exec rm {} +
যার মধ্যে ARG_MAX
কোনওটির প্রয়োজন ছাড়াই সিস্টেমের সীমাটিকে সম্মান করা উচিত xargs
।
ARG_MAX
করে find . -name "*.txt" -exec rm {} \;
উঠতে পারে না :) যেহেতু আপনি উল্লেখ করেছেন আমি এটিও একটি "নিরাপদ শট" বলে উল্লেখ করব
-print0
অবশ্যই সর্বশেষ বিকল্প হতে হবে (বা কমপক্ষে পরে -name "*.txt"
) অন্যথায় এটি ফাইলগুলিকে আর সীমাবদ্ধ*.txt
রাখবে না ...
ঘটনাক্রমে, আপনি যদি সন্ধান ব্যতীত অন্য কিছু ব্যবহার করেন তবে নূতন বাইটগুলি দিয়ে নিউলাইনগুলি প্রতিস্থাপন করতে আপনি ট্র ব্যবহার করতে পারেন।
যেমন। নিম্নলিখিত একটি লাইনার একটি ডিরেক্টরিতে 10 টি সর্বশেষ সংশোধিত ফাইল মুছে ফেলবে, এমনকি যদি তাদের নামে ফাঁকা স্থান রয়েছে।
ls -tp | grep -v / | head -n 10 | tr "\n" "\0" | xargs -0 rm
Xargs কমান্ডটি ডিফল্টরূপে ডিলিমিটার হিসাবে ট্যাব, স্পেস এবং নতুন লাইন ব্যবহার করে। আপনি এটি -d বিকল্পের সাহায্যে কেবলমাত্র নতুন লাইন অক্ষর ('\ n') ব্যবহার করতে বলতে পারেন:
find . -name "*.txt" | xargs -d '\n' rm
-0
পরিবর্তে ) পরিবর্তে উল্লেখ করা হয়েছে । উবুন্টু কী ব্যবহার করে? এখানে গৃহীত উত্তর ব্যবহার করে । সঠিক কি? -d
xargs
-0
find -name "*\ *.txt" | xargs rm
দুটি শব্দ ফাইলের জন্য কাজ করে?