टर्मिनल के साथ वर्तमान फ़ोल्डर फ़ोल्डर के आकार की सूची बनाएं?


134

मुझे वर्तमान निर्देशिका से फ़ोल्डर्स की सूची चाहिए या एक जो मैं उनके आकार के साथ निर्दिष्ट करता हूं।

मैंने du के साथ प्रयास किया है, लेकिन मुझे केवल उन निर्देशिकाओं का आकार मिलता है जिन्हें मैं निर्दिष्ट करता हूं (du ./f1), और ls फ़ोल्डरों का आकार नहीं दिखाता है।

बिना किसी स्क्रिप्टिंग के मैं यह कैसे करूं?


एक झटके की तरह नहीं बल्कि 'मैन डू';)
जकूब

5
धन्यवाद;; लेकिन मैं पहले से ही कोशिश कर रहा हूं और कुछ भी नहीं पा सका। और Googling du को आज़माएं!
केविन

जवाबों:


212

यदि आप वर्तमान निर्देशिका में सभी निर्देशिका दिखाना चाहते हैं:

$ du -sh */
788K    foo/
500K    bar/
931K    baz/

उन्हें दूसरे निर्देशिका से शुरू करने के लिए दिखाने के लिए:

$ du -sh /path/to/dir/*/
48K     /path/to/dir/dir1/
4.0K    /path/to/dir/dir2/
6.7M    /path/to/dir/dir3/
20K     /path/to/dir/dir4/
8.0K    /path/to/dir/dir5/
44K     /path/to/dir/dir6/

यदि आप यह सुनिश्चित करना चाहते हैं कि डॉट के साथ शुरू होने वाले नामों को shopt -s dotglobपहले शामिल किया जाए ।


सभी महान जवाब धन्यवाद, लेकिन यह एक सबसे सरल है। मैं अपने परीक्षणों में अंत / भूल गया।
केविन

1
जहाँ-जहाँ का अर्थ संक्षेप में है, कुल और -h का अर्थ है मानव पठनीय
wranvaud

2
फ़ोल्डरों को आकार के अनुसार क्रमबद्ध करें du -s */ | sort -n:।
एंटोन तारासेंको


1
@ एटनटनारासेंको: shopt -s dotglob डॉक्टर
डेनिस विलियमसन

18

एक मैक पर, --मैक्स-डेप्थ ऑप्शन को -d [डेप्थ] द्वारा दबा दिया जाता है। इसलिए, अपने रूट ड्राइव प्लस 2 स्तरों के मानव पठनीय लिस्टिंग को देखने के लिए निम्नलिखित का गहन उपयोग करें:

du -hd 2 /* 

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


13

एक और aproach -max-गहराई विकल्प है।

du -h --max-depth=1 .

आकार के साथ वर्तमान फ़ोल्डर के तहत सभी निर्देशिकाओं और फ़ाइलों को सूचीबद्ध करेगा।

गहराई 2 फ़ोल्डरों के एक और स्तर को सूचीबद्ध करेगा।


4
मैक पर, यह du -hd 2 .गहराई के 2 स्तरों के लिए है।
रयान

आह येस। और शायद फ्रीबीएसडी पर भी। जानकारी के लिए धन्यवाद।
Matthias krull

5

प्रयत्न, कोशिश:

$ du -s ./f1

या

$ du -sh ./f1

अधिक अनुकूल पठनीय आकारों के लिए।


2

$ du --max-depth=1 /var/www/ | sort -n -r


3
मौजूदा उत्तरों के साथ एक पुराने प्रश्न के उत्तर को जोड़ते समय यह समझाने का अच्छा अभ्यास है कि आपका उत्तर कैसे अलग है और इसमें कुछ स्पष्टीकरण शामिल हैं ताकि यह केवल एक कमांड न हो।
जेसन एलर

3
क्या आप मापदंडों का क्या करते हैं, यह समझाने के लिए अपने जवाब का विस्तार कर सकते हैं?
फिक्सर 1234

2

NCurses डिस्क उपयोग शेल कमांड का उल्लेख करने के लायक ।

Ncdu एक डिस्क उपयोग विश्लेषक है जिसमें ncurses इंटरफ़ेस है। यह एक दूरस्थ सर्वर पर स्पेस हॉग खोजने के लिए डिज़ाइन किया गया है जहां आपके पास संपूर्ण ग्राफ़िकल सेटअप उपलब्ध नहीं है, लेकिन यह नियमित डेस्कटॉप सिस्टम पर भी एक उपयोगी उपकरण है। Ncdu का लक्ष्य तेज़, सरल और उपयोग में आसान होना चाहिए, और स्थापित किए गए ncurses के साथ किसी भी न्यूनतम POSIX जैसे वातावरण में चलने में सक्षम होना चाहिए।


2

स्वीकृत उत्तर पर निर्माण, यह कमांड आपको निर्देशिका में फ़ोल्डर्स के आकार दिखाएगा, और व्याख्या करने के लिए आपके द्वारा आकार के अनुसार उन्हें भी सूचीबद्ध करेगा:

$ du -sh */ | sort -rn

1

मैक पर, आप duहोमब्रे ( brew install coreutils) के साथ जीएनयू (लिनक्स) कार्यान्वयन स्थापित कर सकते हैं । फिर उदाहरण के लिए:

gdu folder -shL --exclude=.git

कहाँ पे

  • gduGNU के कार्यान्वयन के लिए दिया गया नाम है du(डिफ़ॉल्ट रूप से Homebrew छिपा नहीं है /usr/bin/du);
  • s निर्दिष्ट फ़ोल्डर के लिए एक भव्य कुल का उत्पादन करता है (यदि आप ब्रेकडाउन देखना चाहते हैं तो छोड़ें);
  • h आउटपुट मानव-पठनीय आकार;
  • L सीमलिंक का अनुसरण करता है;
  • --exclude=.git निर्दिष्ट फ़ोल्डर के भीतर गिट निर्देशिका को बाहर कर देता है (यह सिर्फ एक उदाहरण है)।

आप अधिक फ़ोल्डरों को जोड़कर अनदेखा कर सकते हैं --exclude=blah। आप एक साथ कई फ़ोल्डर निर्दिष्ट कर सकते हैं (यानी gdu folder1 folder2 ...), और उस स्थिति में, आप विकल्प का उपयोग करके सभी उप-योगों को एक ही आकार में जोड़ सकते हैं c


1

यहाँ एक POSIX स्क्रिप्ट है जो इसके साथ काम करेगी:

  • एक पंक्ति
  • फ़ाइलें
  • एक निर्देशिका
  • निर्देशिकाएँ
#!/bin/sh
ls -ARgo "$@" | awk '{q += $3} END {print q}'

स्रोत

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