এটিতে কয়েক লক্ষ ফাইল সহ আমার একটি ডিরেক্টরি রয়েছে।
আমি সমস্ত ফাইল মুছতে চাই, তবে আরএম * -ফ রিপোর্ট: "যুক্তি তালিকা খুব দীর্ঘ"
এই ডিরেক্টরিটি পরিষ্কার করার সর্বোত্তম উপায় কী?
এটিতে কয়েক লক্ষ ফাইল সহ আমার একটি ডিরেক্টরি রয়েছে।
আমি সমস্ত ফাইল মুছতে চাই, তবে আরএম * -ফ রিপোর্ট: "যুক্তি তালিকা খুব দীর্ঘ"
এই ডিরেক্টরিটি পরিষ্কার করার সর্বোত্তম উপায় কী?
উত্তর:
ইভেন্টটি আপনি ডিরেক্টরিটি সরাতে পারবেন না, আপনি সর্বদা অনুসন্ধান ব্যবহার করতে পারেন।
find . -maxdepth 1 -type f -exec rm -f {} \;
এটি বর্তমান ডিরেক্টরিতে সমস্ত ফাইল মুছে ফেলবে এবং কেবল বর্তমান ডিরেক্টরি (সাব ডিরেক্টরি) নয়।
find dir/to/delete -delete
( rm
মুছতে ফাইলের জন্য কোনও প্রক্রিয়া উত্সাহ দেয় না )।
find dir/to/delete -type f -delete
অনুসন্ধান . -ম্যাক্সডেপথ 1-টাইপ চ-এক্সেক্স আরএম -f {} \;
এটি কেবল খুব দীর্ঘ সময় নেয় (প্রতিটি ফাইলের জন্য আরএমের এক এক্সিকিউট)।
এই এক অনেক বেশি দক্ষ:
অনুসন্ধান . -ম্যাক্সডেপথ 1-টাইপ চ-প্রিন্ট 0 | xargs -r0 rm -f
এটি যতটা সম্ভব আরএম এর পক্ষে যতটা ফাইলনামকে ততটুকু যুক্তি দেয়, তারপরে ফাইলের নামের পরবর্তী লোড দিয়ে আরএম চালায় ... এটি ঘটতে পারে যে আরএমকে কেবল 2 বা 3 বার বলা হয়।
ionice
ঠিক আগে rm
একটা ভাল ধারণা যদি কম্পিউটার একই সময়ে অন্যান্য ব্যক্তিদের দ্বারা ব্যবহৃত হয়।
এই উভয়ই সমস্যা গোল হয়ে উঠবে। এখানে প্রতিটি প্রযুক্তির সংশ্লিষ্ট কর্মক্ষমতা বিশ্লেষণ আছে ।
find . -name WHATEVER -exec rm -rf {} \;
অথবা
ls WHATEVER | xargs rm -rf
সমস্যাটি হ'ল ডিরেক্টরিতে থাকা প্রত্যেকটি আইটেমের সাথে বাশকে "*" প্রসারিত করে। এই উভয় সমাধান পরিবর্তে প্রতিটি ফাইলের মাধ্যমে কাজ করে।
find . -print0 | xargs -0 rm
)।
ls *
" করছেন , এবং "" *
"আপনার শেলটি দীর্ঘায়িত হওয়ার বিষয়ে অভিযোগ করে এমন আর্গুমেন্ট তালিকায় প্রসারিত হয়। ls .
পরিবর্তে " " (অথবা একটি ডিরেক্টরি স্তর উপরে যান এবং " ls [dirname]
" করুন)।
আমি এক স্তরের ব্যাক আপ করে এটি করতে সক্ষম হয়েছি:
cd ..
এবং চলমান:
rm directory name -rf
এবং তারপরে ডিরেক্টরিটি পুনরায় তৈরি করুন।
এই সমস্ত অনুরোধগুলি খুব সুন্দর হয় তবে আমি খুব শীঘ্রই খুব তাড়াতাড়ি মনে করি যখন আমি হুট করে থাকি ঠিক নামকরণের প্রয়োজন: পরিবর্তে আমি ls ব্যবহার করি। কেউ যেমন উল্লেখ করেছেন, এলএস। কাজ করবে তবে আমি এলএস -1 পছন্দ হিসাবে করব:
ls -1 | xargs -n 100 rm -rf
-এন এক্সএক্সএক্সএক্স চিত্রটি সর্বাধিক ছাড়িয়ে যাওয়ার সাথে অভিনয় করা বেশ নিরাপদ হয় স্বয়ংক্রিয়ভাবে সংশোধন করা হবে (যদি আকার-সর্বাধিক ছাড়িয়ে যায়; দেখুন -s) অথবা কোনও অ্যাপ্লিকেশনের জন্য যদি আরগস-ম্যাক্স অতিক্রম করা হয় তবে এটি সাধারণত পরিবর্তিত হবে সুস্পষ্ট।
এটি লক্ষ করা উচিত যে গ্রেপ এই চেইনের মাঝখানে সন্নিবেশ করানো সহজ যখন আপনি কেবলমাত্র একটি বৃহত্তর ডিরেক্টরিতে থাকা ফাইলগুলির একটি উপসেট মুছতে চান এবং যে কারণেই সন্ধানটি ব্যবহার করতে চান তা ব্যবহার করবেন না।
এই উত্তরটি ধরে নিয়েছে যে আপনি আপনার এলএস, জার্গস এবং ইত্যাদির জন্য Gnu কোর ইউটিলিটি ব্যবহার করছেন umes
সিস্টেমটি যখন প্রতিক্রিয়াশীল থাকার দরকার হয় তখন প্রচুর সংখ্যক ফাইল মুছে ফেলার জন্য এখানে একটি সংস্করণ।
এটি ছোট ব্যাচে কাজ জারি করে (ডিফল্টরূপে 100 টি ফাইল) এবং অন্যান্য কাজ শেষ হওয়ার জন্য কিছুটা অপেক্ষা করে কাজ করে।
Ext3- তে একক ডিরেক্টরি থেকে অর্ধ মিলিয়ন ফাইল মুছে ফেলার জন্য দুর্দান্তভাবে কাজ করেছেন। এটি সামান্য বোনাস হিসাবে সম্পন্ন শতাংশ মুদ্রণ করে
noOfFiles=`ls -U | wc -l`
n=0
while (ls -U | tail -n 100 | xargs rm -f); do
n=$((n+100));
sync;
echo -en "$((n*100/noOfFiles))%, ($n of $noOfFiles)\r";
sleep 5;
done
"যুক্তি খুব দীর্ঘ" বা "মেমরি বরাদ্দ করতে পারে না" ত্রুটিগুলি সমাধান করে
এটি সেশন ফোল্ডারে 220,000+ ফাইলগুলিতে কৌশলটি করেছে ...
সুবিধা: তাত্ক্ষণিকভাবে ফাইলগুলি অপসারণ শুরু হয়
সিডি পাথ / টু / ফোল্ডার
ls -f | xargs rm -f -v
ফাইলগুলির স্ক্রিনশট অপসারণের জন্য ক্লিক করুন - (15 মিনিটের সমস্ত ফাইল মুছে ফেলা হয়েছে)
-f (LS পরে) presorting থেকে রাখে
-v (আরএম এর পরে) প্রতিটি ফাইল সরানো হিসাবে প্রদর্শন করে
-f (আরএম পরে) রাইট-সুরক্ষিত ফাইলগুলিতে কোনও প্রম্পট ছাড়াই বাহিনী
টিপ: আপনি যখন ফাইলগুলি মোছার চেষ্টা করছেন তখন অতিরিক্ত স্বয়ংক্রিয় জেনারেট হওয়া ফাইলগুলি যুক্ত হতে প্রথমে ফোল্ডারটির নাম পরিবর্তন করুন (সেশন_ল্ডের প্রাক্তন সেশন) first আপনি যদি আমার ডিরেক্টরি হিসাবে স্বয়ংক্রিয়ভাবে না ঘটে তবে আপনি নিজেই মূল ডিরেক্টরিটি পুনরায় তৈরি করতে পারেন