मैं कमांड लाइन से निर्देशिका (फ़ोल्डर) के कुल आकार का निर्धारण कैसे करूं?


785

एक निर्देशिका (फ़ोल्डर) में सभी फ़ाइलों के कुल कुल आकार (डिस्क उपयोग) को प्रदर्शित करने के लिए एक सरल कमांड है?

मैंने ये कोशिश की है, और वे वो नहीं करते जो मैं चाहता हूँ:

  • ls -l, जो केवल एक निर्देशिका में अलग-अलग फ़ाइलों के आकार को प्रदर्शित करता है, न ही
  • df -h, जो केवल मेरे डिस्क पर मुक्त और प्रयुक्त स्थान प्रदर्शित करता है।



अनुकूल याद दिलाता है कि यह BWFS की तरह CoW फाइल सिस्टम पर लगभग शून्य अर्थ लगा सकता है।
१०:४६ पर वैल

जवाबों:


1263

कमांड du"प्रत्येक फ़ाइल के डिस्क उपयोग को सारांशित करता है, निर्देशिकाओं के लिए पुनरावर्ती," जैसे,

du -hs /path/to/directory
  • -hसंख्या को "मानव पठनीय" प्राप्त 140Mकरना है , उदाहरण के लिए 143260(KBytes में आकार) प्राप्त करें
  • -sसारांश के लिए है (अन्यथा आपको न केवल फ़ोल्डर का आकार मिलेगा, बल्कि अलग से फ़ोल्डर में सब कुछ के लिए भी )

जैसा कि आप उपयोग कर रहे हैं आप का उपयोग करके -hमानव पठनीय मूल्यों को सॉर्ट कर सकते हैं

du -h | sort -h

-hपर झंडा sort"मानव पठनीय" आकार मान पर विचार करेगी।


यदि आप सभी फ़ाइलों और निर्देशिकाओं की पुनरावर्ती सूची से बचना चाहते हैं, तो आप --max-depthकितने आइटम प्रदर्शित किए जाते हैं, इसे सीमित करने के लिए पैरामीटर की आपूर्ति कर सकते हैं। आमतौर पर सबसे अधिक,--max-depth=1

du -h --max-depth=1 /path/to/directory

9
अतिरिक्त मील जाने के लिए सम्मान। :)
myusuf3

93
मैं का उपयोग करें du -shया DOOSH यह याद रखना एक तरीके के रूप (नोट: आदेश में एक ही, स्मृति प्रयोजनों के लिए कमांडलाइन झंडे के सिर्फ संगठन है)
मार्को Ceppi

3
डु को एक उपयोगी विकल्प है - जिसे अनैपरेंट-साइज़ कहा जाता है। इसका उपयोग किसी फ़ाइल या निर्देशिका के वास्तविक आकार को खोजने के लिए किया जा सकता है (डिस्क पर इसके पदचिह्न के विपरीत) उदाहरण के लिए, केवल 4 वर्णों वाली एक पाठ फ़ाइल लगभग 6 बाइट्स पर कब्जा कर लेगी, लेकिन फिर भी ~ 4K में लेने के रूप में दिखाई देगी। एक नियमित डु -श आउटपुट। हालाँकि, यदि आप --apparent- आकार विकल्प पास करते हैं, तो आउटपुट होगा 6. मैन डू का कहना है: --appearent-size प्रिंट स्पष्ट आकार, डिस्क उपयोग के बजाय; यद्यपि स्पष्ट आकार आमतौर पर छोटा होता है, यह ('विरल'), आंतरिक विखंडन, अप्रत्यक्ष ब्लॉक में छेद के कारण बड़ा हो सकता है
बनी

4
यह OS X के लिए भी काम करता है! धन्यवाद, मैं वास्तव में अपने स्थानीय मशीन और मेरे सर्वर दोनों पर फ़ाइलों को साफ़ करने का एक तरीका ढूंढ रहा था, लेकिन स्वचालित तरीके काम नहीं कर रहे थे। तो, मैं भाग गया du -hs *और सबसे बड़ी निर्देशिका में चला गया और पता चला कि कौन सी फाइलें इतनी बड़ी थीं ... यह इतनी अच्छी विधि है, और सबसे अच्छी बात यह है कि आपको कुछ भी स्थापित करने की आवश्यकता नहीं है! निश्चित रूप से मेरे उत्थान के हकदार थे
देव

@BandaMuhammadAlHelal मुझे लगता है कि इसके दो कारण हैं: राउंडिंग ( duकुछ हद तक अजीबोगरीब गोलाई है, अगर कोई मूल्य एक यूनिट में एक से अधिक अंक नहीं है), और शास्त्रीय 1024 बनाम 1000 प्रीफ़ेक्चर समस्या है। इकाइयों को बदलने के लिए duएक विकल्प -B(या --block-size) है जिसमें यह मूल्यों को प्रदर्शित करता है, या आप बाइट्स में "कच्चे" मूल्य प्राप्त करने के -bबजाय उपयोग कर सकते हैं -h
मार्सेल स्टिमबर्ग

164

हाल ही में मुझे एक शानदार, ncurses आधारित इंटरेक्टिव टूल मिला, जो आपको निर्देशिका आकारों के बारे में जानकारी देता है। सालों से उस तरह के टूल की तलाश की जा रही है।

  • फ़ाइल पदानुक्रम के माध्यम से जल्दी से ड्रिलडाउन
  • आप उपकरण के अंदर से विशाल अस्थायी फ़ाइलों को हटा सकते हैं
  • बहुत ज़्यादा तेज़

कमांड लाइन के लिए इसे बाओबाब के रूप में सोचें :

apt-get install ncdu

11
यह बिल्कुल शानदार है! डेज़ीडिस्क की तरह, ओएसएक्स के लिए
सबजेरो

3
ncduकमाल है! इसे स्थापित करने के बाद, बस ऐसा करें ncdu /। आपको सिस्टम पर सबसे बड़ी फाइलें बहुत जल्दी मिलेंगी। hNcdu के कंसोल इंटरफ़ेस के अंदर भी दबाएं । इसके बहुत ही उपयोगी शॉर्टकट हैं
vlad-ardelean

यह वही है जो मुझे चाहिए था: इतना सरल, इतना कुशल। शुद्ध प्रेम।
user3790897

52

यह आकार को पुन: खोजता है और इसे प्रत्येक फ़ोल्डर के नाम के बगल में रखता है, साथ ही नीचे के कुल आकार के साथ, सभी मानव प्रारूप में

du -hsc *


10

tree इस काम के लिए एक और उपयोगी कमांड है:

बस इसे इंस्टॉल करें sudo apt-get install treeऔर निम्न टाइप करें:

tree --du -h /path/to/directory
...
...

33.7M used in 0 directories, 25 files

से आदमी पेड़ :

-h    Print  the size of each file but in a more human readable way, e.g. appending a size letter for kilo‐
      bytes (K), megabytes (M), gigabytes (G), terabytes (T), petabytes (P) and exabytes (E).

--du  For each directory report its size as the accumulation of sizes of all its files and  sub-directories
      (and their files, and so on). The total amount of used space is also given in the final report (like
      the 'du -c' command.)

9

नीचे मैं कुल, फ़ोल्डर और फ़ाइल का आकार प्रिंट करने के लिए उपयोग कर रहा हूं:

$ du -sch /home/vivek/* | sort -rh

विवरण

 ------------------------------------------------------------
   -c, --total
          produce a grand total
   -h, --human-readable
          print sizes in human readable format (e.g., 1K 234M 2G)
   -s, --summarize
          display only a total for each argument
 -------------------------------------------------------------
   -h, --human-numeric-sort
          compare human readable numbers (e.g., 2K 1G)
   -r, --reverse
          reverse the result of comparisons

उत्पादन

 70M    total
 69M    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/lib
992K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/results
292K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/target
 52K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/user-files

4

उत्तरों ने यह स्पष्ट कर दिया है कि duनिर्देशिका के कुल आकार को खोजने के लिए यह उपकरण है। हालांकि, कुछ कारकों पर विचार करना है:

  • कभी-कभी, duआउटपुट भ्रामक हो सकता है क्योंकि यह फ़ाइल सिस्टम द्वारा आवंटित स्थान की रिपोर्ट करता है, जो व्यक्तिगत फ़ाइलों के आकार के योग से भिन्न हो सकता है। आमतौर पर फाइलसिस्टम एक फाइल के लिए 4096 बाइट्स आवंटित करेगा, भले ही आपने इसमें केवल एक चरित्र संग्रहीत किया हो!

  • 2 की शक्ति और 10 इकाइयों की शक्ति के कारण आउटपुट अंतर। -hस्विच करने के लिए du2 ^ 10 (1024), 2 ^ 20 (1048576) आदि द्वारा बाइट की संख्या बिताते हैं एक मानव पठनीय उत्पादन देने के लिए। कई लोगों को 10 की शक्तियों (जैसे 1K = 1000, 1M = 1000000) को देखने की अधिक आदत हो सकती है और परिणाम से आश्चर्यचकित होना चाहिए।

किसी निर्देशिका में सभी फ़ाइलों के आकार का कुल योग, बाइट्स में करने के लिए:

find <dir> -ls | awk '{sum += $7} END {print sum}'

उदाहरण:

$ du -s -B 1
255729664

$ find .  -ls | awk '{sum += $7} END {print sum}'
249008169

Find-ls-awk बड़े फ़ोल्डर्स # 1 के लिए एक गलत मान लौटाएगा । नए जाग के लिए आप जोड़ सकते हैं --bignumया -M; यदि वह विकल्प find . -ls | tr -s ' '|cut -d' ' -f 7| paste -sd+ |bc # 2 नहीं है
गोएजेज़

अगर 2 की शक्तियों का उपयोग किया जा रहा है तो एक समस्या है, --siविकल्प है: "जैसे -एच, लेकिन 1000 की शक्तियों का उपयोग करें 1024 नहीं"
muru

1

केवल पठनीय प्रारूप में निर्देशिका आकार के लिए, नीचे का उपयोग करें:

du -hs directoryname

यह शायद सही खंड में नहीं है, लेकिन कमांड लाइन से, आप कोशिश कर सकते हैं:

ls -sh filename

-sआकार है, और -hमानव पठनीय है।

नीचे दी गई सूची की तरह -lदिखाने के लिए प्रयोग करें ls:

ls -shl

0

du /foldernameकिसी फ़ोल्डर का आकार जानने के लिए मानक कमांड है। मैन पेज को पढ़कर विकल्प ढूंढना सबसे अच्छा अभ्यास है:

man du

कमांड का उपयोग करने से पहले आपको मैन पेज ( ऑनलाइन उपलब्ध ) पढ़ना चाहिए ।


0

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

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

स्रोत


0

यदि आपकी वांछित निर्देशिका में कई उप-निर्देशिकाएँ हैं, तो निम्नलिखित का उपयोग करें:

$ cd ~/your/target/directory
$ du -csh 

-c, -total एक भव्य कुल
-s का उत्पादन करता है , - प्रत्येक तर्क के लिए केवल -summarize प्रदर्शन कुल
-h, मानव पठनीय प्रारूप में -human पठनीय प्रिंट आकार (जैसे, 1K 234M 2G)

जो तब वर्तमान निर्देशिका में सभी फ़ाइलों / फ़ोल्डरों द्वारा मेमोरी उपयोग का एक कुल उत्पादन करेगा।


-1

मुझे लगता है कि सबसे अच्छा निम्नलिखित है:

du -h directory_name | tail -n1

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

मुझे यह जोड़ना चाहिए कि यदि फ़ोल्डर का आकार बड़ा है तो डु अधिक समय लेता है। इस कार्य के लिए आपको धैर्य रखना चाहिए। किसी भी अन्य यूनिक्स कमांड की तरह, आप timeइस कमांड से पहले इस प्रक्रिया के लिए कुल समय का पता लगा सकते हैं :

time du -h directory_name | tail -n1

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