मैं सभी खाली निर्देशिकाओं को कैसे हटाऊं


11

(लिनक्स सिस्टम पर)

मेरे पास एक फ़ाइल सिस्टम पर नेस्टेड उपनिर्देशिकाओं का एक बड़ा सेट है। मैं सभी निर्देशिका पथों को प्रिंय करना चाहूंगा जिनमें कोई भी फाइल नहीं है।

दूसरे शब्दों में, मैं हर उस निर्देशिका को हटाना चाहूँगा जहाँ उस निर्देशिका में या उस निर्देशिका के किसी भी उपनिर्देशिका में कोई फ़ाइल पुनरावर्ती नहीं है।

जवाबों:


15

खोजने के सभी संस्करणों के लिए

find -depth -type d -empty -exec rmdir {} \;

यदि आपके पास एक नया संस्करण है

 find -type d -empty -delete

कूल, -deleteध्वज को नहीं जानता था ।
एएनआई_लुमेन

न ही मैं। मैंने कुछ नया सीखा। मैंने खाली स्क्रिप्ट खोजने के लिए पुनरावर्तन का उपयोग करते हुए पहले स्क्रिप्ट लिखी है। यह उस कार्य को बहुत सरल करता है।
जेम्स

2
हाँ -मैं खाली झंडा वास्तव में यहाँ मदद करता है। यह खाली फ़ाइलों को खोजने के लिए भी काम करता है अगर आपने -type d या सिर्फ इस्तेमाल किया -type f शामिल नहीं किया है
माइक

1

सबसे अच्छा समाधान नहीं हो सकता है, लेकिन यह स्क्रिप्ट काम करती है:

#!/bin/sh

while true
do
    DIRS=`find . -xdev -type d -exec find {}  -maxdepth 0 -empty  \;`
    if [ -z "$DIRS" ]; then
        exit 0
    else
        echo $DIRS | xargs rmdir
    fi
done

( सभी खाली फ़ोल्डरों की सूची के उत्तर पर आंशिक रूप से आधारित )


1
बस मेरे साथ ऐसा हुआ है कि यह एक अनंत लूप में चला जाएगा यदि आपके पास किसी भी खाली निर्देशिका को हटाने की अनुमति नहीं है, तो कृपया इसके बजाय स्वीकृत उत्तर का उपयोग करें :)
एंड्रयूआर

0
for i in `find -type d -empty`; do rmdir $i; done

नजदीक पर बिना सिगार के। आप उस मामले को याद कर रहे हैं जहां एक निर्देशिका को हटाने से उसके माता-पिता खाली हो जाते हैं।
साइमन रिक्टर

यह सच है। मैं findउन्हें एक दूसरे रन में। असली लाइव में कभी भी यह मामला नहीं था।
ansi_lumen
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.