डु कमांड छिपी निर्देशिकाओं को पार्स नहीं करता है


25

मैं निम्नलिखित कमांड का उपयोग करके निर्देशिका द्वारा उपयोग किए जाने वाले डिस्क स्थान की मात्रा का अनुमान लगाना चाहता हूं।

du -sh dir_name

जो छिपी हुई निर्देशिकाओं की गणना नहीं करता है। डु के मैन पेज में इसके संबंध में कोई जानकारी नहीं है। छिपी हुई फ़ाइलों सहित निर्देशिका द्वारा उपयोग किए जाने वाले डिस्क स्थान की मात्रा की गणना कैसे करें।

जवाबों:


13

वास्तव में यह करता है, यहाँ सबूत है:

mkdir .test
echo "hi" > .test/appo
du -a
4       ./.test/appo
8       ./.test
12      .

-aविकल्प स्पष्ट रूप से दिखाने के लिए जो फ़ाइलों की गिनती की गई प्रयोग किया जाता है।

क्या आप उपयोग कर रहे हैं du *?


3
+1 के लिए... you maybe using "du *" ?
सेह

2
मैं "du *" का उपयोग नहीं कर रहा हूं। मैं इस सवाल का उल्लेख करना भूल गया कि मुझे कुल सारांश की आवश्यकता है। इसलिए यदि मैं दोनों -a और -s का उपयोग डु -स के रूप में करता हूं, तो मुझे एक त्रुटि संदेश मिलता है जिसमें कहा जाता है कि "डु: दोनों सारांशित नहीं कर सकते हैं और सभी प्रविष्टियां दिखा सकते हैं"। यह एक मुद्दा है। दूसरी बात यह है कि मैं भी du-ai के साथ केवल पहले स्तर की फाइलें देखने के लिए मिलता है। छिपी हुई निर्देशिकाओं के अंदर फ़ाइलों को देखने में असमर्थ।
तलस्पिन_किट

1
मैं बस के लिए -एक जोड़ा दिखाने के सभी फ़ाइलों को गिना जा रहा है, सिर्फ इतना है कि झंडा नहीं जोड़ते हैं, यह केवल प्रदर्शन, नहीं योग प्रभावित करते हैं। मैंने आपको एक जवाबी उदाहरण दिखाया कि इसके बजाय छिपी हुई निर्देशिकाओं को गिना जाता है।
स्टिवलो

1
अब मुझे समस्या मिल गई। समस्या छिपी हुई निर्देशिका एक प्रतीकात्मक कड़ी थी, इसलिए मुझे "du -Lsh dir_name" का उपयोग करना पड़ा। धन्यवाद।
तलस्पिन_किट

1
आह, मुझे लगता है, खुशी है कि आप इसे पाया, खुश है।
स्टिव्लो

53

यह कमांड आपको छिपी निर्देशिकाओं के सारांशित आकार को दिखाता है

du -hs .[^.]*


1
यह वही है जो मैं देख रहा था, धन्यवाद :)
निकाना रेक्लाविके

यह सही समाधान है
3pns

यह भयानक होगा यदि आप इसके पीछे के जादू को थोड़ा समझा सकते हैं। यह एक उत्तर बनाने में मदद करेगा जिसमें छिपी हुई और गैर-छिपी हुई फाइलें और निर्देशिका दोनों शामिल हैं।
kumetix

13

सही आदेश है: du -hs $(ls -A)

$ du -hs $(ls -A)
0   test
0   .test

du -hs .* *, जैसा कि एक अन्य उत्तर में बताया गया है, यदि आप सभी फाइलों और उपनिर्देशिकाओं (छिपे हुए लोगों सहित) को सूचीबद्ध करना चाहते हैं तो यह सही नहीं है।

उदाहरण :

$ touch test
$ touch .test
$ echo *
test
$ echo .* *
. .. .test test
$ du -hs .* *
4,0K    .
1,8G    ..

ऐसा duव्यवहार क्यों करता है ? क्योंकि आप -sउस परिणाम का संक्षेप में उपयोग करते हैं और यह कि सभी फाइलें और उपनिर्देशिकाएं हैं, .इसलिए बच्चे du -hsउन्हें सूचीबद्ध नहीं करते हैं!


11

FYI करें, विभिन्न निर्देशिकाओं के कब्जे वाले आकार का अनुमान लगाने के लिए, इसका ncdu का उपयोग करने के लिए बेहतर है

आप विभिन्न निर्देशिकाओं के बीच ncurses GUI में नेविगेट कर सकते हैं और यह प्रत्येक निर्देशिका का आकार दिखाएगा। अगर मैं du का उपयोग कर रहा हूं, तो मुझे प्रत्येक डायरेक्टरी के लिए du कमांड निष्पादित करना होगा जिसे मैं जांचना चाहता हूं जो बोझिल हो सकता है। आप निर्देशिकाओं को ncurses GUI में व्याप्त आकार के अनुसार सॉर्ट कर सकते हैं।


1
कृपया अपने उत्तर को यह इंगित करने के लिए संपादित करें कि आप ncdu को "बहुत बेहतर" क्यों मानते हैं। लिंक किए गए पृष्ठ वास्तव में इसके बारे में इसके अलावा कुछ भी नहीं कहते हैं कि यह एक ncurses- आधारित संस्करण है du। एक कट्टर प्रदर्शन विधि के अलावा, किसी भी कार्यात्मक अंतर का कोई स्पष्ट संकेत नहीं है।
डेव शेरोहमान

मुझे लगता है कि आपकी क्वेरी को गतिशील रूप से समायोजित करने की क्षमता एक बड़ा लाभ है। मैं ~ पर ncdu चला सकता हूं, जानें कि कौन सी निर्देशिका सबसे अधिक स्थान का उपयोग कर रही है और फिर सीधे उन में गोता लगाती है। यह आपको dनिर्देशिकाओं को हटाने के लिए बाध्यकारी भी देता है , जिससे आप सीधे इंटरफ़ेस से साफ कर सकते हैं।
user88974

5

यह करता है और यह नहीं करता है। उदाहरण:

होम निर्देशिका में: (केवल एक उपयोगकर्ता मौजूद है)

du -sh /home/*
2.6G    /home/user

उपयोगकर्ता निर्देशिका में: (रकम के बीच भारी अंतर)

du -sh *
61M     bin
2.0M    dump-20130124104823.tar.gz
651M    public_html
472K    twitter-2.0.0.gem
11M     wkhtmltopdf-0.11.0_rc1-static-amd64.tar.bz2

और कारण है:

du -sh /home/user/.rvm/
1.9G    /home/user/.rvm/

du उपनिर्देशिकाओं में उतरते समय छिपी हुई निर्देशिकाओं की गणना करेगा, लेकिन वर्तमान निर्देशिका में * बस .directory_name पैटर्न से मेल नहीं खाता है, इसलिए वर्तमान निर्देशिका छिपे हुए तत्व को छोड़ दिया जाएगा।

मुझे यह पता लगाने में कुछ समय लगा, और जैसा कि श्याभि ने सिफारिश की है कि अगर मैं ncdu का उपयोग करता तो स्पष्ट होता।



1

find -maxdepth 1 -exec du -sh "{}" \; | sort -h

यह आपको देता है:

  • छिपी हुई फ़ाइलों / निर्देशिकाओं का आकार
  • गैर-छिपी हुई फ़ाइलों / निर्देशिकाओं का आकार
  • वर्तमान निर्देशिका का कुल आकार

यह यह देखने के लिए आसान बनाने के लिए आउटपुट को भी सॉर्ट करता है कि सबसे बड़ा क्या है। मैंने अपनी ~/.bash_aliasesफ़ाइल में इसे भी एक उपनाम बनाया है ।

alias big='find -maxdepth 1 -exec du -sh "{}" \; | sort -h'
alias sbig='sudo find -maxdepth 1 -exec du -sh "{}" \; | sort -h'

अब मैं बस bigएक निर्देशिका में सबसे बड़ी निर्देशिकाओं को खोजने के लिए निष्पादित कर सकता हूं और sbigजब मुझे sudo अनुमतियों की आवश्यकता होती है।


0
du -ahd1 | sort -hr | head -10

निम्नलिखित में -dविकल्प का वर्णन है du --help:

-d, --max-गहराई = N निर्देशिका (या फ़ाइल, --all) के लिए कुल प्रिंट करता है, केवल अगर यह एन या कमांड लाइन तर्क से कम स्तर है; --मैक्स-डेप्थ = 0 वैसा ही है जैसे- सममराइज


यद्यपि यह समस्या को हल करने में मदद कर सकता है, लेकिन यह इस बात को स्पष्ट नहीं करता है कि क्यों और / या यह कैसे पता करता है। इस अतिरिक्त संदर्भ को प्रदान करने से इसके दीर्घकालिक शैक्षिक मूल्य में काफी सुधार होगा। कृपया स्पष्टीकरण जोड़ने के लिए अपने जवाब को संपादित करें, जिसमें सीमाएं और मान्यताएं शामिल हैं। धन्यवाद।
फिक्सर 1234

0

यह कमांड आपको डिस्क उपयोग को निर्देशिका में लाने और निम्नलिखित को निष्पादित करने में मदद करेगा।
"du -sch। [!] * * | Sort -h"

यहां एक विशेष निर्देशिका के डिस्क उपयोग की गणना करने का तरीका बताया गया है। मैंने Du_sh नाम से एक डायरेक्टरी बनाई है और अंदर दो फाइलें (एक छिपी हुई 10 एमबी और सामान्य 20 एमबी) बनाई हैं।

nikhil@debian:~$ mkdir Du_sh nikhil@debian:~$ cd Du_sh/ nikhil@debian:~/Du_sh$ dd if=/dev/zero of=.10MB bs=1024 count=10240 10240+0 records in 10240+0 records out 10485760 bytes (10 MB, 10 MiB) copied, 0.0299941 s, 350 MB/s nikhil@debian:~/Du_sh$ nikhil@debian:~/Du_sh$ dd if=/dev/zero of=20MB bs=2048 count=10240 10240+0 records in 10240+0 records out 20971520 bytes (21 MB, 20 MiB) copied, 0.0342258 s, 613 MB/s nikhil@debian:~/Du_sh$ du -sch .[!.]* * 10M .10MB 20M 20MB 30M total nikhil@debian:~/Du_sh$ du -sch .[!.]* * | sort -h 10M .10MB 20M 20MB 30M total nikhil@debian:~/Du_sh$

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