यहां बहुत सारे उत्तर हैं, जिनमें से कई डुप्लिकेट हैं। मुझे तीन प्रवृत्तियां दिखाई देती हैं: दूसरी शेल कॉल के माध्यम से पाइपिंग करना, जटिल शेल / 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 है तो वृद्धि) को संरेखित करता है ।
यहां अधिकांश समाधानों के विपरीत, यह उनके नामों में रिक्त स्थान के साथ निर्देशिकाओं का ठीक से समर्थन करता है (हालांकि हर समाधान, जिसमें यह एक है, लाइन टूटने वाले निर्देशिका नामों को गलत करेगा)।