निर्देशिका को गहराई से नेस्टेड-पहले सूचीबद्ध करें।
find . -depth -type d -exec rmdir {} \; 2>/dev/null
(ध्यान दें कि पुनर्निर्देशन findएक पूरे के रूप में कमांड पर लागू होता है , केवल करने के लिए नहीं rmdir। केवल पुनर्निर्देशन rmdirएक महत्वपूर्ण मंदी का कारण होगा क्योंकि आपको एक मध्यवर्ती शेल को लागू करने की आवश्यकता होगी।)
खोजने के rmdirलिए -emptyविधेय पास करके आप गैर-खाली निर्देशिकाओं पर चलने से बच सकते हैं। जब यह कमांड चलने वाला होता है, तो GNU निर्देशिका का परीक्षण करता है, इसलिए अभी खाली की गई निर्देशिका को उठाया जाएगा।
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
कौन सी विधि तेज है यह इस बात पर निर्भर करता है कि आपके पास कितने गैर-खाली निर्देशिका हैं। आप -emptyइनवॉइस को समूहीकृत करने के तरीकों के साथ गठजोड़ नहीं कर सकते , क्योंकि तब जो निर्देशिका केवल खाली निर्देशिका होती है, वे समय findपर खाली नहीं दिखतीं ।
एक और तरीका कई पासों को चलाने का होगा। क्या यह तेज है, बहुत सारी चीजों पर निर्भर करता है, जिसमें यह भी शामिल है कि क्या पूरी निर्देशिका पदानुक्रम डिस्क कैश में findरन के बीच रह सकती है ।
while [ -n "$(find . -depth -type d -empty -print -exec rmdir {} +)" ]; do :; done
वैकल्पिक रूप से, zsh का उपयोग करें। ग्लोब क्वालीफायर F गैर खाली निर्देशिका से मेल खाता है, तो /^Fखाली निर्देशिका से मेल खाता है। केवल खाली निर्देशिका वाले निर्देशिकाओं का इतनी आसानी से मिलान नहीं किया जा सकता है।
while rmdir **/*(/N^F); do :; done
(यह तब समाप्त होता है जब rmdirएक खाली कमांड लाइन प्राप्त होती है।)