ডিরেক্টরিগুলি গভীরভাবে নেস্টেড-প্রথমে তালিকাবদ্ধ করুন।
find . -depth -type d -exec rmdir {} \; 2>/dev/null
(মনে রাখবেন যে পুনর্নির্দেশটি find
সম্পূর্ণভাবে কমান্ডের ক্ষেত্রে প্রযোজ্য , কেবল তেমন নয় rmdir
only কেবলমাত্র পুনর্নির্দেশের rmdir
ফলে আপনাকে একটি মধ্যবর্তী শেলটি চাওয়া দরকার বলে উল্লেখযোগ্য মন্দ হতে পারে))
আপনি rmdir
খালি খালি ডিরেক্টরিতে -empty
চালনাটি প্রিফিকেটটি পাস করে এড়াতে পারবেন । কমান্ডটি চালানোর সময় জিএনইউ ডিরেক্টরিটি পরীক্ষা করে, সুতরাং সবে খালি করা ডিরেক্টরিগুলি বাছাই করা হবে।
find . -depth -type d -empty -exec rmdir {} \;
গতি বাড়ানোর আরেকটি উপায় rmdir
হ'ল আমন্ত্রণগুলি গ্রুপ করা । দুটিই সম্ভবত আসলটির চেয়ে লক্ষণীয়ভাবে দ্রুততর হতে পারে, বিশেষত সাইগউইনের অধীনে। আমি এই দুটিয়ের মধ্যে খুব বেশি পার্থক্য আশা করি না।
find . -depth -type d -print0 | xargs -0 rmdir 2>/dev/null
find . -depth -type d -exec rmdir {} + 2>/dev/null
কোন পদ্ধতিটি দ্রুত তা নির্ভর করে আপনার কতটি খালি খালি ডিরেক্টরি রয়েছে on -empty
আমন্ত্রণগুলি গোষ্ঠীভুক্ত করার জন্য আপনি পদ্ধতির সাথে একত্রিত করতে পারবেন না , কারণ কেবলমাত্র ডিরেক্টরিগুলি খালি ডিরেক্টরি রয়েছে তা সময় না find
দেখে খালি হয় না ।
আরেকটি পদ্ধতি হ'ল একাধিক পাস চালানো। এটি দ্রুততর কিনা তা অনেকগুলি বিষয়ের উপর নির্ভর করে, পুরো ডিরেক্টরি হায়ারার্কি find
রানের মধ্যে ডিস্ক ক্যাশে থাকতে পারে কিনা তা সহ ।
while [ -n "$(find . -depth -type d -empty -print -exec rmdir {} +)" ]; do :; done
বিকল্পভাবে, zsh ব্যবহার করুন। উল্লিখিত glob কোয়ালিফায়ার F
খালি নয় এমন ডিরেক্টরি সাথে মিলে যায়, তাই /^F
খালি ডিরেক্টরি সাথে মেলে। যে ডিরেক্টরিগুলিতে কেবল খালি ডিরেক্টরি থাকে সেগুলি এত সহজে মেলে না।
while rmdir **/*(/N^F); do :; done
( rmdir
খালি কমান্ড লাইন পেলে এটি সমাপ্ত হয় ))