DU: केवल गहराई पर फ़ोल्डर्स दिखाते हैं


12

मुझे du -hनिम्न प्रकार से आउटपुट मिल रहा है :

103M    ./.wine/drive_c/windows/mono/mono-2.0/lib/mono
103M    ./.wine/drive_c/windows/mono/mono-2.0/lib
129M    ./.wine/drive_c/windows/mono/mono-2.0
129M    ./.wine/drive_c/windows/mono
362M    ./.wine/drive_c/windows
545M    ./.wine/drive_c

मैं केवल सबसे एक्शन करने योग्य फ़ोल्डर दिखाना चाहता हूं, जो कि फ़ोल्डर है ./.wine/drive_c/windows/mono/mono-2.0/lib/mono

यदि कोई बच्चा फ़ोल्डर डिस्क स्थान उपयोग के अधिकांश के लिए जिम्मेदार है, तो क्या पैरेंट फ़ोल्डर को निकालने का कोई तरीका है?

केवल लीफ फोल्डर दिखाने के लिए एक सेटिंग मूल फ़ोल्डर के आकार की गणना करते समय अभिभावक फ़ोल्डर से सभी सबफ़ोल्डर्स के आकार को घटाने के लिए ट्रिक या एक सेटिंग कर सकती है।


यह अक्सर नेत्रहीन ट्रैक करने के लिए आसान है; देखें कि कैसे समझें कि अंतरिक्ष में क्या हो रहा है?
गिलेस एसओ- बुराई को रोकें '

जवाबों:


12

यदि आप GNU डु का उपयोग कर रहे हैं, तो आप अभिभावक के उपयोग की गणना करते समय उपनिर्देशिकाओं के आकार को शामिल नहीं करने के लिए -Sया --separate-dirsविकल्प का उपयोग कर सकते हैं ।

आपका duआदेश इस विकल्प का समर्थन नहीं कर सकता है।

आप इस जोड़ी को सबसे बड़ी व्यक्तिगत निर्देशिका (GNU उपकरण मानकर) प्राप्त करने के लिए उपयोग कर सकते हैं:

du --separate-dirs -h . |sort -h

यह मेरी क्वेरी के 'पैरेंट फ़ोल्डर के भाग के आकार की गणना करते समय, एक मूल फ़ोल्डर से सभी सबफ़ोल्डर्स के आकार को घटाना' को संतुष्ट करता प्रतीत होता है, इसलिए संभवतः स्वीकार करेंगे! मुझे यकीन नहीं है कि यह वास्तव में मेरी जरूरतों को पूरा कर रहा है, (स्थान को पुनः प्राप्त करने के लिए सबसे
एक्शन

9

व्यक्तिगत रूप से, मैं इसे केवल GNU सॉर्ट की शक्ति के साथ संयोजित करता हूं:

du -ch | sort -h

यह आकार को मानव पठनीय प्रारूप में छांटने का कारण बनेगा। उदाहरण के लिए:

$ du -h /usr/ | head -20 | sort -h
8.0K    /usr/src/linux-headers-3.2.0-3-common/include/misc
12K /usr/src/linux-headers-3.2.0-3-common/include/drm/i2c
12K /usr/src/linux-headers-3.2.0-3-common/include/net/netfilter/ipv4
16K /usr/src/linux-headers-3.2.0-3-common/include/net/netfilter/ipv6
20K /usr/src/linux-headers-3.2.0-3-common/include/net/phonet
28K /usr/src/linux-headers-3.2.0-3-common/include/acpi/platform
52K /usr/src/linux-headers-3.2.0-3-common/include/net/netns
60K /usr/lib32/libv4l
76K /usr/src/linux-headers-3.2.0-3-common/include/net/caif
96K /usr/src/linux-headers-3.2.0-3-common/include/scsi/fc
108K    /usr/src/linux-headers-3.2.0-3-common/include/net/bluetooth
112K    /usr/src/linux-headers-3.2.0-3-common/include/drm/ttm
148K    /usr/src/linux-headers-3.2.0-3-common/include/net/netfilter
264K    /usr/src/linux-headers-3.2.0-3-common/include/rdma
284K    /usr/src/linux-headers-3.2.0-3-common/include/acpi
596K    /usr/src/linux-headers-3.2.0-3-common/include/drm
608K    /usr/src/linux-headers-3.2.0-3-common/include/scsi
668K    /usr/games
6.3M    /usr/lib32/gconv
8.9M    /usr/lib32

से man sort:

   -h, --human-numeric-sort
          compare human readable numbers (e.g., 2K 1G)

यह अभी भी उन लोगों को दिखाता है जिनके बारे में आप परवाह नहीं करते हैं, लेकिन अब यह बहुत आसान है जो आप करते हैं।


नहीं, यह वास्तव में इसे बदतर बनाता है, जैसा कि अब यह 545M ./.wine/drive_cसूची के शीर्ष पर दिखाता है , भले ही इसमें केवल फ़ोल्डर और कोई फ़ाइलें हों, और यह देखने के लिए कठिन बनाता है कि ड्राइव_c के सबफ़ोल्डर (पुनरावर्ती) के बीच स्थान कैसे वितरित किया जाता है क्योंकि यह डॉन नहीं है सूची में लगातार दिखाई नहीं देता।
ईओजीएनएम

6

यदि आप स्पष्ट रूप से व्यवस्थित दृश्य की तलाश कर रहे हैं, तो मैं durepपैकेज की सलाह देता हूं ।

उदाहरण आउटपुट:

root@dogmeat:~# durep -td 4 -hs 50M /usr/
[ /usr     4.8G (0 files, 9 dirs) ]
   1.9G [###########                   ]  38.57% lib/
     463.6M [#######                       ]  24.46% x86_64-linux-gnu/
         102.3M [######                        ]  22.07% wine/
     276.2M [####                          ]  14.57% i386-linux-gnu/
          96.1M [##########                    ]  34.80% wine/
     222.4M [###                           ]  11.73% libreoffice/
         189.3M [#########################     ]  85.12% program/
     122.6M [#                             ]   6.47% chromium-browser/
          87.6M [#####################         ]  71.46% chromium-browser
      79.5M [#                             ]   4.19% virtualbox/
      79.4M [#                             ]   4.19% jvm/
          73.4M [###########################   ]  92.52% java-7-openjdk-amd64/
              73.4M [############################# ]  99.99% jre/
      75.7M [#                             ]   3.99% python2.7/
          58.4M [#######################       ]  77.21% dist-packages/
      58.9M [                              ]   3.11% firefox/
      52.2M [                              ]   2.75% libwireshark.so.2.0.2
   1.4G [########                      ]  29.56% src/
   1.2G [#######                       ]  26.03% share/
     211.6M [####                          ]  16.54% fonts/
         199.3M [############################  ]  94.18% truetype/
              84.2M [############                  ]  42.23% horai-umefont/
     174.6M [####                          ]  13.64% icons/
          91.5M [###############               ]  52.39% gnome/
              66.4M [#####################         ]  72.60% icon-theme.cache
      77.5M [#                             ]   6.05% gimp/
          77.5M [##############################] 100.00% 2.0/
              66.2M [#########################     ]  85.43% help/
      74.4M [#                             ]   5.82% virtualbox/
          56.9M [######################        ]  76.42% VBoxGuestAdditions.iso
      62.9M [#                             ]   4.91% doc/
 240.1M [#                             ]   4.89% bin/

-tdअधिकतम गहराई निर्दिष्ट करने के लिए पैरामीटर का उपयोग करें , और -hsपरिणाम में दिखाने के लिए एक फ़ोल्डर के लिए न्यूनतम आकार निर्दिष्ट करने के लिए पैरामीटर।


2

वास्तव में सुनिश्चित नहीं हैं कि अगर यह तुम क्या चाहते है, लेकिन आप का उपयोग कर जीएनयू माता पिता निर्देशिका पट्टी कर सकते हैं findकी -execdir:

find . -type d -execdir du -ch "{}" \;

-execdirविकल्प के समान है -exec, लेकिन आदेश आप उपनिर्देशिका है, जहां में आपूर्ति कार्यान्वित findएक फ़ाइल मिल गया है।


हम्म, कि जैसा आप वर्णन करते हैं, वह काम नहीं करता है। मैं अभी भी आउटपुट में बहुत सी मूल निर्देशिका प्राप्त कर रहा हूं।
EoghanM

2

यदि आप duएक निश्चित गहराई का उपयोग कर रहे हैं , उदाहरण के लिए du -m -d 2 ., आप बस उन लाइनों को बाहर निकाल सकते हैं जो आपकी अधिकतम गहराई तक नहीं पहुँचती हैं:

du -m -d 2 . | sort -k1n | awk -F"/" 'NF==3'

इस मामले में, मुझे 2 निर्देशिकाओं की गहराई चाहिए थी, इसलिए मैंने केवल 3 फ़ील्ड्स के साथ परिणामों को रखा , शुरू में मेरे क्षेत्र विभाजक के रूप में निर्दिष्ट करने के बाद awkकीवर्ड के साथ परिभाषित किया गया।NF"/"


0

ये दोनों मेरे लिए काम करते हैं:

 du -h | perl -ne '$n=()=$_=~m#/#g;  print unless $n > 2'
 du -h | perl -ne 'print unless ($n=()=$_=~m#/#g) > 2 '

थोड़ी सी टिप्पणी, संख्याओं का मिलान करने के लिए, मैच एक सूची के संदर्भ में होना चाहिए कि हमें क्यों () की आवश्यकता है।
Huw

डु -ह | perl -ne 'प्रिंट जब तक () = $ _ = ~ m # / # जी)> 2'
huw
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.