निर्देशिका का अनुमानित आकार प्राप्त करें (पुन: सभी फ़ाइलों और उप-निर्देशिकाओं सहित)


10

क्या किसी निर्देशिका के लिए एक सटीक आकार प्राप्त करने का एक तरीका है (सहित, पुनरावर्ती, इसके सभी उप-निर्देशिका)? मुझे उप-आकारों के आकार नहीं चाहिए, मेरा मतलब सिर्फ इतना है कि वे रिपोर्ट किए गए कुल आकार में पुनरावर्ती रूप से शामिल होने चाहिए।

असफल होना, एक अनुमानित आकार प्राप्त करने का एक तरीका है? मैं कुछ के साथ सोच रहा हूँ dfकि पूरी फाइल प्रणाली के लिए एक त्वरित प्रतिक्रिया पैदा करता है, लेकिन इस बार एक विशिष्ट निर्देशिका के लिए (और यह उपनिर्देशिका है)।

duजब किसी निर्देशिका में हजारों उप-डायरियां होती हैं, तो समाधानों का उपयोग करने में उम्र लगती है।


उपयोग करना duएकमात्र तरीका है जिससे मैं अवगत हूं। समस्या यह है कि डेटा पूरे पदानुक्रम में फैला हुआ है, इसलिए इसे काउंट प्राप्त करने के लिए एक उपकरण द्वारा लंबा किया जाना चाहिए।
slm

जवाबों:


15

मुझे लगता है कि यह काफी उपयोगी है।

du -sm Directory

या अंदर निर्देशिकाओं का टूटना पाने के लिए

du -sm Directory/*

और फिर एक प्रकार के साथ अगर यह कई उपखंड मिल गया है

du -sm Directory/* | sort -n 

मैं -m विकल्प का उपयोग करने का कारण यह सुनिश्चित करना है कि मुझे मेगाबाइट आउटपुट मिलता है। मुझे लगता है कि यह मेरे लिए नेत्रहीन तुलना करने के लिए आसान है (जब मैं इकाइयों का मिश्रण नहीं प्राप्त कर रहा हूं जैसे कि 999 केबी और 1 एमबी बनाम 999000 एमबी और 1000000 एमबी की तुलना करें), अतिरिक्त लाभ यह है कि आप आउटपुट को सॉर्ट कर सकते हैं।

इसे सभी पृष्ठभूमि में रखें और आउटपुट को रीडायरेक्ट करें, यह समय लेने वाला है जो कभी भी किसी एक विधि का उपयोग करता है, यह कई फ़ाइलों का एक निशान है जो समय लगेगा।

du -sm Directory/* | sort -nr > ~/cacheDu.log &

नोट बाहर क्रम उल्टा करें इतना बड़ा लोगों शुरुआत में हैं। इसे हर एन मिनट चलाने के लिए क्रोन में जोड़ें।

फिर अन्य उपनाम के साथ, आपको एक अप-टू-डेट निर्देशिका उपयोग मिल गया है।

export alias ducache='head -n 15 ~/cacheDu.log'

@X तियान ग्लेन जैकमैन के जवाब पर मेरी टिप्पणी देखें
मार्कस

स्वीकार किया जाता है, यही कारण है कि मैं -m और सॉर्ट करता हूं
X Tian

3
याद रखें shopt -s dotglob, अन्यथा du -sm Directory/*छिपी हुई फाइलों / निर्देशिकाओं की गिनती नहीं करेंगे।
दिमित्री ग्रिगोरीव

@ XTian क्षमा करें, लेकिन मैं कुछ कमांड pls मदद करने में असमर्थ था ।
मव

मैं इसे यहाँ
Maveň it

5
du -sh "$dir"

आपको "मानव" स्वरूपित आउटपुट में कुल आकार का सारांश देगा।


चूंकि आप एक विकल्प की तलाश में थे du, मैंने कोशिश की find, लेकिन यह बिल्कुल वैसा ही है:

$ find . -printf "%s\n" | { 
    sum=0
    while read size; do ((sum+=size)); done
    echo $sum
}
122865202884
$ du -sb .
122865202884    .

धन्यवाद, मैं इसके बारे में जानता हूं, लेकिन duयह एक सटीक परिणाम पैदा करने के बाद से बहुत लंबा रास्ता तय करता है। मैं एक ऐसे टूल / कमांड की उम्मीद कर रहा था जो त्वरित n 'गंदा अनुमानित उत्तर प्रदान करता हो।
मार्कस जूनियस ब्रूटस

dfलेकिन वहाँ है कि पूरे फाइल सिस्टम पर काम करता है।
ग्लेन जैकमैन

1

आपको मेरा उत्तर पसंद नहीं आ सकता है, लेकिन मुझे लगता है कि आप जो चाहते हैं उसका सबसे अच्छा तरीका है कि आप पृष्ठभूमि में "डु-एस" को नियमित रूप से क्रोन का उपयोग करके चलाएं और परिणाम को फ़ाइल में संग्रहीत करें। फिर जब आप एक अनुमानित मूल्य चाहते हैं, तो फ़ाइल से मान का उपयोग करें। आपको तय करना है कि कितनी बार डुबकी लगानी है। मुझे मूल्य प्राप्त करने का तेज़ तरीका दिखाई नहीं देता है। कमांड डू जो करता है उसके लिए कुशल है।

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

यदि आपकी निर्देशिका को छोड़कर फ़ाइल सिस्टम में सब कुछ जानना तेज़ है, तो आप फ़ाइल सिस्टम के लिए df चला सकते हैं, अपनी निर्देशिका के अलावा सभी चीजों के लिए डु और घटा सकते हैं।


0

यह आपकी आवश्यकताओं के अनुरूप नहीं है (एक-लाइन प्रिंट नहीं), लेकिन अन्य तरीकों की तुलना में इसका रास्ता आसान है:

du -a -h | sort -hr | head -2

यह कमांड आपको डायरेक्टरी और सब-डायरेक्टरी का आकार और वर्तमान डायरेक्टरी पर सबसे बड़ी फाइल या सब-डायरेक्टरी का आकार देगा।

पुनश्च: head -2यदि कोई उप-निर्देशिका वर्तमान निर्देशिका के सभी स्थान ले लेती है और वर्तमान से पहले सुनी जाती है।

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