প্রচুর সাব-ফোল্ডার সহ আমি কীভাবে একটি ফোল্ডার দ্রুত মুছতে পারি?


15

আমার 266778 সাবফোল্ডার সহ একটি ফোল্ডার রয়েছে। আমি কীভাবে এটি মুছতে পারি?

আমি চেষ্টা করেছি

cd ~/.local/share/Trash/
sudo rm -rf *

তবে এটি অনেক সময় নেয়। 1 মিনিট 25 সেকেন্ড রিয়েল টাইম এবং 0.072 সেকেন্ড ব্যবহারকারীর সময় এটি কেবল 2500 ফোল্ডার মুছে ফেলে। এই ফোল্ডারটি মুছতে দুই ঘন্টা সময় লাগবে।

এই ফোল্ডারটি মুছে ফেলার জন্য কি আরও দ্রুত উপায় আছে? ব্যবহারকারীর সময় এবং আসল সময়ের মধ্যে এত বড় পার্থক্য কেন?

real    1m25.474s
user    0m0.072s
sys     0m28.142s

আমি লিনাক্স 2.6.32 (উবুন্টু 10.04.4 এলটিএস) ব্যবহার করি।


আমি এই সমস্যাটি সবেমাত্র গুগল করেছি এবং দেখে মনে হচ্ছে যে কিছু লোক আবিষ্কার করেছেন যে rsync একটি "বহু-ফাইল-মোছা" সরঞ্জাম হিসাবে বেশ দক্ষতার সাথে ব্যবহার করা যেতে পারে। এটি সত্যই দ্রুততর কিনা তা মূল্যায়ন করা আপনার উপর নির্ভর করে।
জোহান

2
এটির জন্য মূল্যবান: অনেকগুলি ফোল্ডার / ফাইল মোছার সময় কার্য সম্পাদন করা উচ্চ ফাইল সিস্টেম নির্ভর। আমার অভিজ্ঞতার মধ্যে যখন ext3 (ধীর) বনাম এক্সএফএস (দ্রুত) এর কয়েক মিলিয়ন ছোট ফাইল মুছে ফেলা কয়েক ঘন্টা হতে পারে।
পিডো

আপনার যদি প্রায়শই এই ক্ষেত্রে থাকে এবং আপনি বিটিআরএফএসের মতো একটি ফাইল সিস্টেম ব্যবহার করে এবং সাবভলিউম ব্যবহার করে সামনের পরিকল্পনা করতে পারেন তবে কেবলমাত্র সাবভলিউমটি ফেলে দিয়ে আপনি জিনিসগুলি দ্রুততর করতে পারেন।
প্লাজমাএইচএইচ

আপনি উত্তর খুঁজে পেতে পারেন এখানে। পার্ল একটি দ্রুততম। unix.stackexchange.com/questions/37329/…
এসডসোলার

উত্তর:


17

যদি আপনার "সন্ধান করুন" এর সংস্করণটি মুছে ফেলা সাব-কমান্ডটি প্রয়োগ করে, তবে আপনি চেষ্টা করতে পারেন

find directory -delete

এক্ষেত্রে:

find ~/.local/share/Trash/ -delete

কিছু কমান্ড, যেমন আরএম, তাদের বেশিরভাগ কাজ কার্নেলে করে। ফাইল-সিস্টেমের রুটিনগুলিতে সঠিক হতে হবে। সময় কাটাতে সিস্টেম কলগুলি সেইভাবে গণ্য করা হয়, সুতরাং আপনার "আরএম" কমান্ডটি দীর্ঘ সময় ধরে চলতে থাকলেও এটি ব্যবহারকারী-জমিতে খুব বেশি কাজ করে না - সিস্টেম কলগুলি বেশিরভাগ কাজ সম্পাদন করে।


+1; যদিও এটি প্যারেন্ট ডিয়ারটিকেও মুছে ফেলে এবং আমার সন্দেহ হয় যে ওপি কেবল ফোল্ডারটিই ফোল্ডারে নয় ট্র্যাশ ফোল্ডারের সামগ্রীগুলি মুছতে চেয়েছিল
don_crissti

1
@ ডন_ক্রিসটি: ভালো মন্তব্য। যদি ওপি কেবল ~ /। লোকাল / শেয়ার / ট্র্যাশের অধীনে (এবং প্রথম স্তরের ফাইল নয়) সাবডিয়ারগুলি মুছে ফেলতে চেয়েছিল, তবে: find ~/.local/share/Trash/*/ -delete অবশ্যই, এটি এই ট্র্যাশ / * / এর যে কোনও ফাইল (এবং ডায়ার) মুছে ফেলবে পাশাপাশি সাবডিয়ার্স)
অলিভিয়ার ডুলাক

2
এর প্রতিকূল আচরণটি ব্যাখ্যা করার জন্য +1time
মার্টিন থোমা

3
এর find directory -deleteচেয়ে সত্যি কি দ্রুত rm -rf directory? সর্বোপরি, তারা একই কাজ সম্পাদন করে এবং এটি করার দুটি উপায় নেই।
গিলস 'তাই খারাপ হওয়া বন্ধ করুন'

1
@ জোহান সন্ধান সত্যিই দ্রুত। আপনি কি কখনও কারণ খুঁজে বের করার সুযোগ পেয়েছেন?
হর্ষদীপ

20

এটি আপনার দ্রুত সংজ্ঞা উপর নির্ভর করে । এখানে ইতিমধ্যে উত্তরগুলি প্রকৃতপক্ষে ফাইল সিস্টেম থেকে ডিরেক্টরিগুলি সরিয়ে ফেলার জন্য একটি ভাল সমাধান দেয়, তবে আপনার যা প্রয়োজন তা যদি ডিরেক্টরি নামটি যত দ্রুত সম্ভব মুক্ত করা হয় তবে একই ফাইল সিস্টেমে একটি নাম পরিবর্তন করা তাত্ক্ষণিক:

{ mv directory directory.gone && rm -rf directory.gone; } &

প্রযুক্তিগতভাবে এটি প্রতারণা করছে যেহেতু আমি প্রকৃত মুছে ফেলার গতি নেই, তবে ব্যবহারিকভাবে এটি খুব দরকারী: আমি এই কৌশলটি সব সময় ব্যবহার করি যাতে আমাকে ধীর মুছে ফেলার অপেক্ষার জন্য অপেক্ষা করতে না হয়।


গ্রেট। সারাক্ষণ এটি করার জন্য আপনার ব্যবহারের ক্ষেত্রে কী? আপনি যদি এটি অনেক কিছু করেন, তবে কোনও বিপদ নেই যা আপনি ব্যাকলগ করবেন, একাধিক 'ডিরেক্টরী.gone পেয়ে যাবেন এবং ব্যর্থ হবেন? আমি মনে করি আপনি '$$' বা '% (তারিখ ...)' এর মতো একটি প্রত্যয় ব্যবহার করেছেন
স্মিচি

1
যদি আমার প্রয়োজন হয় যে আমি সম্ভবত যুক্তিযুক্ত mktemp ব্যবহার করতে পারি যা এটি একই ফাইল সিস্টেমে স্থির থাকে তা নিশ্চিত করে। তবে আমি এখনই বলতে পারি না আমার কাছে একটি নির্দিষ্ট উদাহরণ রয়েছে।
কোজিরো

কোজিরো হ্যাঁ ধন্যবাদ, mktempআমি যা মনে রাখার চেষ্টা করছিলাম ...
smci

1

rm -rf directoryঅথবা rm -rf *অবশ্যই আপনার স্থানীয় rmবাস্তবায়ন ভঙ্গ না করা হলে দ্রুততম পদ্ধতি ।

ব্যবহার findকোন সুবিধা দেয় না।

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

সোলারিসে ইউএফএস এবং জেডএফএস এই ধরণের টাস্কের সাথে খুব দ্রুত বলে পরিচিত কারণ উভয় ফাইল সিস্টেমের প্রয়োগে বিলম্বিত পটভূমি মোছার কোড অন্তর্ভুক্ত রয়েছে unlink()এবং rmdir()সম্পর্কিত বস্তুটি আরও বেশি সময় নিবে এমনকি যদি কলগুলি দ্রুত ফিরে আসে।

কার্নেলের মধ্যে বিলম্বিত পটভূমি মুছে ফেলার সাথে সাথে ডিরেক্টরি আপডেটগুলি দ্রুত করা যায় এবং এটি পুরো ক্রিয়াকে গতিতে সহায়তা করে।


যদিও একজনকে এই ভেবে ক্ষমা করা যেতে পারে, এটি আসলে সত্য নয়, যেমন এই উত্তরের বর্ণনা রয়েছে।
হাইটেক কম্পিউটার কম্পিউটার

0

এটি কেবল একটি আংশিক উত্তর, কমান্ডটি ফিরে আসবে এমন তিনটি মানের আলোকপাত করে; থেকে উদ্ধৃত time(1)র manpage :

(i) প্রার্থনা এবং সমাপ্তির মধ্যে অতিবাহিত আসল সময়, (ii) ব্যবহারকারীর সিপিইউ সময় ( একটি হিসাবে প্রত্যাবর্তিত হিসাবে মান tms_utimeএবং সংখ্যার যোগফল ), এবং (iii) সিস্টেমের সিপিইউ সময় (একটিতে মান এবং মানগুলির যোগফল) হিসাবে ফিরে )। "tms_cutimestruct tmstimes(2)tms_stimetms_cstimestruct tmstimes(2)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.