सवाल संक्षेप में निर्देशिकाओं और उनके उपनिर्देशिका के आकार कैसे प्राप्त करें?


मान लें कि मैं एक लिनक्स फ़ाइल सिस्टम की प्रत्येक निर्देशिका का आकार प्राप्त करना चाहता हूं। जब मैं उपयोग करता हूं ls -la मुझे वास्तव में फ़ोल्डर्स का सारांश आकार नहीं मिलता है।

अगर मैं उपयोग करता हूँ df मुझे प्रत्येक आरोहित फ़ाइल सिस्टम का आकार मिलता है लेकिन यह मेरी मदद नहीं करता है। और साथ du मुझे प्रत्येक उपनिर्देशिका का आकार और संपूर्ण फ़ाइल सिस्टम का सारांश मिलता है।

लेकिन मैं फ़ाइल सिस्टम के रूट फ़ोल्डर के भीतर प्रत्येक निर्देशिका का सारांशित आकार केवल चाहता हूं। क्या यह हासिल करने के लिए कोई आदेश है?


266
2017-07-11 17:26


मूल


--total ध्वज मेरे लिए सहायक था। जैसे du -sh --total applications/*। askubuntu.com/a/465436/48214 - Ryan


जवाब:


यह वही करता है जो आप खोज रहे हैं:

du -sh /*

इसका क्या मतलब है:

  • -s प्रत्येक कमांड लाइन तर्क के लिए केवल कुल देने के लिए।
  • -h मानव-पठनीय प्रत्यय के लिए M मेगाबाइट्स के लिए और G गीगाबाइट्स (वैकल्पिक) के लिए।
  • /* बस सभी निर्देशिकाओं (और फाइलों) में फैलता है /

    नोट: डॉटफाइल शामिल नहीं हैं; रन shopt -s dotglob उनको शामिल करने के लिए भी।

आकार के अनुसार सॉर्टिंग भी उपयोगी है:

du -sh /* | sort -h

यहाँ:

  • -h निश्चित करता है की sort मानव-पठनीय प्रत्यय को सही तरीके से व्याख्या करता है।

374
2017-07-11 17:28



यदि आपके पास रूट निर्देशिका में डॉट-निर्देशिका हैं, तो आप इसका उपयोग कर सकते हैं shopt -s dotglob उन्हें गिनती में शामिल करने के लिए। - Philipp
यह बहुत उपयोगी है, क्योंकि यह आसान है और आप इसके बजाय इच्छित पथ को रख सकते हैं /*, उदा। ./ वर्तमान निर्देशिका के लिए या ./* वर्तमान निर्देशिका में प्रत्येक आइटम के लिए। - psur
@psur या आप उपयोग कर सकते हैं ./*/ केवल सबफ़ोल्डर प्राप्त करने के लिए और सभी आइटम नहीं - relascope
क्रमबद्ध संस्करण: du -sh /* | sort -h - Vu Anh
@ सी 1 एफआर अगर आपका sort नहीं है -h, आपको इसे छोड़ने की जरूरत है du साथ ही, अन्यथा सॉर्टिंग किलो / मेगा / गीगाबाइट मिश्रण करेगा। du -s /* | sort -nr। - Thomas


मुझे अक्सर सबसे बड़ी निर्देशिकाएं खोजने की ज़रूरत होती है, इसलिए 20 सबसे बड़ी डीआईआर युक्त सॉर्टेड सूची प्राप्त करने के लिए मैं यह करता हूं:

du -m /some/path | sort -nr | head -n 20

इस मामले में आकार मेगाबाइट्स में रिपोर्ट किया जाएगा।


71
2017-07-29 12:07



इसे और अधिक पठनीय du -sh / कुछ / पथ प्राप्त करने का एक तरीका यहां दिया गया है sort -hr | सिर -20 - Xedecimal
@Xedecima एच का उपयोग करने में समस्या यह है कि विभिन्न आकारों को संभालने के तरीके को नहीं पता है। उदाहरण के लिए 268K 255 एम से अधिक क्रमबद्ध है, और दोनों 2.7 जी से अधिक क्रमबद्ध हैं - chrisan
'सॉर्ट' कमांड पर -h (मानव पठनीय) तर्क इन मानों को ठीक से पढ़ना चाहिए। डु की तरह ही-झंडा उन्हें निर्यात करता है। आप जो चल रहे हैं उसके आधार पर मैं अनुमान लगा रहा हूं। - Xedecimal
उबंटू 16.04 में काम करता है। अच्छा टिप - SDsolar
सुडो डु-हक्स 1 जी / | sort -hr | सिर -30 - deviant


मुझे उपयोग करना पसंद है Ncdu इसके लिए, आप निर्देशिका संरचना के माध्यम से नेविगेट करने और ड्रिल करने के लिए कर्सर का उपयोग कर सकते हैं, यह वास्तव में अच्छी तरह से काम करता है।


15
2017-12-24 10:07





मौजूदा उत्तर बहुत उपयोगी हैं, शायद कुछ शुरुआती (मेरे जैसे) भी यह सहायक पाएंगे।

  1. बहुत बुनियादी पाश, लेकिन मेरे लिए यह कुछ अन्य आकार से संबंधित संचालन के लिए एक अच्छी शुरुआत थी:

    for each in $(ls) ; do du -hs "$each" ; done
    
  2. पहले उत्तर के समान और लगभग उसी परिणाम के समान 1.), लेकिन उपनिर्देशिका में * ./* के अंतर को समझने में मुझे कुछ समय लगा:

    du -sh ./*
    

9
2017-11-22 16:53





निम्नलिखित du बीएसडी सिस्टम पर आविष्कार करना चाहिए:

du -d 1 /

6
2017-07-11 17:29



मेरे du (उबंटू 10.4) में कोई नहीं है -d विकल्प। आप किस प्रणाली पर हैं? - Thomas
मेरे ओपन एसयूएसई पर इसमें एक-डी विकल्प नहीं है :( - 2ndkauboy
ठीक है, तो यह केवल एक बीएसडी विकल्प है (मैं ओएस एक्स पर हूं)। - Philipp
बीएसडी / * एनआईक्स पर सही पोर्टेबल विकल्प संयोजन है du -sk /*। मुझे नफरत है -k सामान बहुत ज्यादा है। लिनक्स ' -h पूरी तरह से चट्टानों। - Dummy00001
अन्य प्रणालियों में, इसकी --max-depth - Vishnu Kumar


यह आसान नहीं है। du आदेश या तो फ़ाइलें और फ़ोल्डर्स (डिफ़ॉल्ट) या केवल उन सभी वस्तुओं के आकार दिखाता है जिन्हें आप कमांड लाइन पर निर्दिष्ट करते हैं (विकल्प -s)।

लिनक्स पर मानव पठनीय आकारों के साथ क्रमबद्ध, सबसे बड़ी वस्तुओं (फ़ाइलों और फ़ोल्डरों) को क्रमबद्ध करने के लिए:

du -h | sort -h

यह आपको छोटी फ़ाइलों में से एक टन में दफन करेगा। आप उनसे छुटकारा पा सकते हैं --threshold (मेरे उदाहरण में 1 एमबी):

du --threshold=1M -h | sort -h

इस कमांड का लाभ यह है कि इसमें छिपे हुए डॉट फ़ोल्डर्स (फ़ोल्डर्स जो शुरू होते हैं .)।

यदि आप वास्तव में फ़ोल्डर्स चाहते हैं, तो आपको इसका उपयोग करने की आवश्यकता है find लेकिन यह बहुत धीमा हो सकता है du कई बार कई फ़ोल्डरों को स्कैन करना होगा:

find . -type d -print0 | sort -z | xargs --null -I '{}' du -sh '{}' | sort -h

3
2017-07-24 11:04



--threshold ^^^ यह विकल्प लिनक्स पर उपलब्ध नहीं है - podarok
@podarok यह ओपनएसयूएसई 13.2 लिनक्स पर उपलब्ध है। अपने वितरण का एक नवीनतम संस्करण खोजने का प्रयास करें या पैकेज के अपने हालिया संस्करण को संकलित करें। - Aaron Digulla
यह उबंटू एलटीएस (14.04) पर काम नहीं करता है। यह सबसे हालिया है)) - podarok
@podarok जीएनयू कोर्यूटिल्स का कौन सा संस्करण? मेरा 8.24 है। - Aaron Digulla
कैशिंग एक बुरी अवधि हो सकती है। मैं इस बंदरगाह में कुछ ऐसा करने की सोच रहा था superuser.com/a/597173/121352 जहां हम एक बार मैपिंग में डिस्क सामग्री को स्कैन करते हैं और फिर डिस्क को फिर से मारने के बजाए उस मैपिंग से डेटा का उपयोग जारी रखते हैं। - Hennes


ध्यान रखें, कि आप निर्देशिकाओं की तुलना नहीं कर सकते हैं du सुनिश्चित किए बिना विभिन्न सिस्टम / मशीनों पर, दोनों फाइल सिस्टम के समान अवरोध साझा करते हैं। यह गिन सकता है अगर आप किसी फ़ाइल को लिनक्स मशीन से nas तक rsync करते हैं और आप स्वयं समन्वयित निर्देशिका की तुलना करना चाहते हैं। आप के साथ अलग-अलग परिणाम मिल सकते हैं du विभिन्न अवरोधों के कारण ....


1
2017-10-05 15:36





आप भी जांचना चाहेंगे xdiskusage। आपको वही जानकारी देगा, लेकिन ग्राफिकल रूप से दिखाया गया है, साथ ही ड्रिल करने की अनुमति देता है (बहुत उपयोगी)। केडीई और यहां तक ​​कि विंडोज़ के लिए अन्य समान सुविधाएं हैं।


0
2017-07-12 19:42