यहां बहुत सारे उत्तर हैं, जिनमें से कई डुप्लिकेट हैं। मुझे तीन प्रवृत्तियां दिखाई देती हैं: दूसरी शेल कॉल के माध्यम से पाइपिंग करना, जटिल शेल / awk कोड का उपयोग करना, और अन्य भाषाओं का उपयोग करना।
यहां डु और ऑक का उपयोग करके एक पोसिक्स-अनुरूप समाधान है जो हर सिस्टम पर काम करना चाहिए।
मैंने थोड़ा अलग दृष्टिकोण लिया है, -xयह सुनिश्चित करने के लिए कि हम एक ही फाइल सिस्टम पर बने रहें (मुझे केवल इस ऑपरेशन की आवश्यकता तब होती है जब मैं डिस्क स्थान पर छोटा होता हूं, इसलिए क्यों मैंने इस एफएस पेड़ के भीतर घुड़सवार सामान को बाहर निकाल दिया है या स्थानांतरित कर दिया है सहानुभूति वापस?) और आसान दृश्य पार्सिंग बनाने के लिए निरंतर इकाइयों को प्रदर्शित करना। इस मामले में, मैं आम तौर पर चयन नहीं सुलझाने के लिए तो मैं बेहतर सौपानिक संरचना देख सकते हैं।
sudo du -x | awk '
$1 > 2^20 { s=$1; $1=""; printf "%7sG%s\n", sprintf("%.2f",s/2^21), $0 }'
(चूंकि यह सुसंगत इकाइयों में है, तो आप फिर से जोड़ सकते हैं | sort -nयदि आप वास्तव में क्रमबद्ध विज्ञापन परिणाम चाहते हैं ।)
यह किसी भी निर्देशिका को फ़िल्टर करता है जिसकी (संचयी) सामग्री 512MB से अधिक नहीं है और फिर गीगाबाइट में आकार प्रदर्शित करता है। डिफ़ॉल्ट रूप से, du 512-बाइट ब्लॉक आकार का उपयोग करता है (इसलिए 2 20 ब्लॉकों की awk स्थिति 512MB है और इसके 2 21 विभाजक इकाइयों को GB में कनवर्ट करते हैं - हम इसके du -kxसाथ $1 > 512*1024और s/1024^2अधिक मानव पठनीय हो सकते हैं)। अजीब स्थिति के अंदर, हम sआकार पर सेट करते हैं ताकि हम इसे लाइन ( $0) से हटा सकें । यह सीमांकक (जो एक एकल स्थान पर ढह गया है) को बरकरार रखता है, इसलिए अंतिम %sएक स्थान और फिर एकत्रित निर्देशिका का नाम दर्शाता है। %7sगोल %.2fआकार ( %8sयदि आपके पास 10TB है तो वृद्धि) को संरेखित करता है ।
यहां अधिकांश समाधानों के विपरीत, यह उनके नामों में रिक्त स्थान के साथ निर्देशिकाओं का ठीक से समर्थन करता है (हालांकि हर समाधान, जिसमें यह एक है, लाइन टूटने वाले निर्देशिका नामों को गलत करेगा)।