2013-02-19 15:34:27 +0000 2013-02-19 15:34:27 +0000
104
104

Wyświetlić rozmiar każdego podkatalogu w formie listy za pomocą jednolinijkowego polecenia w Bash?

Chcę uzyskać listę katalogów i ich rozmiarów w formacie listy, tak jak to się robi po wykonaniu ls -l.

Rzecz w tym, że czy istnieje jednoliniowa komenda, która może to zrobić? Widzę, że inni mają długie komendy tylko po to, żeby to wyprowadzić. To jest po prostu zbyt długie.

Jaka komenda może to zrobić lub kombinacja komend, które można łatwo wpisać? du -h daje to, ale wyświetla wszystkie podfoldery, co nie jest tym, czego chcę. tylko bieżące katalogi folderów.

Odpowiedzi (4)

126
126
126
2013-02-19 15:36:20 +0000

Spróbuj tego

du -h --max-depth=1

Wyjście

oliver@home:/usr$ sudo du -h --max-depth=1
24M ./include
20M ./sbin
228M ./local
4.0K ./src
520M ./lib
8.0K ./games
1.3G ./share
255M ./bin
2.4G .

Alternatywa

Jeśli --max-depth=1 jest trochę za długie jak na Twój gust, możesz również spróbować użyć:

du -h -s *

Używa to -s (--summarize) i domyślnie wydrukuje tylko rozmiar samego folderu. Przekazując wszystkie elementy w bieżącym katalogu roboczym (*), daje podobne wyjście jak --max-depth=1:

Wyjście

oliver@cloud:/usr$ sudo du -h -s *
255M bin
8.0K games
24M include
520M lib
0 lib64
228M local
20M sbin
1.3G share
4.0K src

Różnica jest subtelna. Pierwsze podejście wyświetli całkowity rozmiar bieżącego katalogu roboczego oraz całkowity rozmiar wszystkich folderów, które się w nim znajdują… ale tylko do głębokości 1.

Drugie podejście obliczy całkowity rozmiar wszystkich przekazanych elementów pojedynczo. Uwzględnia więc symlink lib64 na wyjściu, ale nie uwzględnia elementów ukrytych (których nazwa zaczyna się od kropki). Brakuje w nim również całkowitego rozmiaru bieżącego katalogu roboczego, ponieważ nie został on przekazany jako argument.

79
79
79
2016-06-17 23:04:29 +0000

Prawdopodobnie chcesz zobaczyć katalogi uporządkowane według rozmiaru:

$ du -hs * | sort -hr

856M lib
746M share
612M lib64
312M src
267M java
239M bin
179M sbin
173M local
93M i686-w64-mingw32
72M libexec
26M include
20M puppet
772K X11R6
20K man
4.0K games
4.0K etc
0 tmp
6
6
6
2014-11-06 14:52:37 +0000

Wypisuje rozmiary wszystkich plików folderów i plików ukrytych na dysku:

el@dev /home/el $ du -sh `ls -a`
258M .
265M ..
4.0K .classpath
258M .git
4.0K .gitignore
9.0K nbactions.xml
12K README
20K .README.swp
4.0K run.sh
23K XmlPostPropagate.php
```.
3
3
3
2016-06-12 12:29:56 +0000

Warto wspomnieć o poleceniu powłoki NCurses Disk Usage .

Ncdu jest analizatorem wykorzystania dysku z interfejsem ncurses. Został on zaprojektowany do znajdowania zbędnego miejsca na zdalnym serwerze, gdzie nie masz do dyspozycji pełnej konfiguracji graficznej, ale jest użytecznym narzędziem nawet na zwykłych systemach desktopowych. Ncdu ma być szybki, prosty i łatwy w użyciu, i powinien być w stanie działać w każdym minimalnym środowisku POSIX-opodobnym z zainstalowanym ncurses.