আপনি যদি একসাথে খুব বেশি সংখ্যক ফাইল মুছে ফেলার চেষ্টা করছেন (আমি আজ ৪৮৫,০০০+ এর সাথে একটি ডিরেক্টরি মুছে ফেলেছি) তবে আপনি সম্ভবত এই ত্রুটির মধ্যে চলে যাবেন:
/bin/rm: Argument list too long.
সমস্যা হল যখন আপনি ভালো কিছু টাইপ rm -rf *
, *
, যে ম্যাচিং ফাইলের একটি তালিকা দিয়ে প্রতিস্থাপিত হয় "RM -rf file1 file2 file3 file4" ইত্যাদি মত। এই আর্গুমেন্টের তালিকা সংরক্ষণের জন্য মেমরির তুলনামূলকভাবে একটি ছোট বাফার রয়েছে এবং যদি এটি পূরণ করা হয় তবে শেলটি প্রোগ্রামটি চালায় না।
এই সমস্যাটি পেতে, অনেক লোক প্রতিটি ফাইল সন্ধানের জন্য ফাইন্ড কমান্ডটি ব্যবহার করে এবং একে একে একে "আরএম" কমান্ডে প্রেরণ করে:
find . -type f -exec rm -v {} \;
আমার সমস্যাটি হ'ল আমার ৫০০,০০০ ফাইল মুছতে হবে এবং এটি অনেক দীর্ঘ সময় নিচ্ছিল।
আমি ফাইলগুলি মুছে ফেলার আরও দ্রুততর পথে হোঁচট খেয়েছি - "ফাইন্ড" কমান্ডটিতে একটি "মুছে ফেলা" পতাকাটি নির্মিত হয়েছে! এখানে আমি যা ব্যবহার করে শেষ করেছি:
find . -type f -delete
এই পদ্ধতিটি ব্যবহার করে, আমি প্রায় 2000 ফাইল / সেকেন্ডের হারে ফাইলগুলি মুছছিলাম - আরও দ্রুত!
আপনি ফাইলের নামগুলি মুছার সাথে সাথে তাও প্রদর্শন করতে পারেন:
find . -type f -print -delete
… বা এমনকি কতগুলি ফাইল মুছে ফেলা হবে তা দেখান, তারপরে সেগুলি মুছতে কতক্ষণ সময় লাগে:
root@devel# ls -1 | wc -l && time find . -type f -delete
100000
real 0m3.660s
user 0m0.036s
sys 0m0.552s