2010-07-11 17:26:29 +0000 2010-07-11 17:26:29 +0000
316
316

Jak uzyskać sumaryczne rozmiary katalogów i ich podkatalogów?

Powiedzmy, że chcę uzyskać rozmiar każdego z katalogów systemu plików Linux. Kiedy używam ls -la nie otrzymuję skrótowego rozmiaru katalogów.

Jeśli używam df otrzymuję rozmiar każdego zamontowanego systemu plików, ale to również mi nie pomaga. A z du otrzymuję rozmiar każdego podkatalogu i podsumowanie całego systemu plików.

Ale chcę mieć tylko podsumowany rozmiar każdego katalogu w katalogu ROOT systemu plików. Czy jest jakieś polecenie, aby to osiągnąć?

Odpowiedzi (9)

450
450
450
2010-07-11 17:28:23 +0000

To robi to, czego szukasz:

du -sh /*

Co to znaczy:

  • -s aby podać tylko sumę dla każdego argumentu z linii poleceń.
  • -h dla przyrostków czytelnych dla człowieka, jak M dla megabajtów i G dla gigabajtów (opcjonalnie).
  • /* po prostu rozwija się do wszystkich katalogów (i plików) w /.

Przydatne jest również sortowanie według rozmiaru:

du -sh /* | sort -h

Tutaj:

  • -h zapewnia, że sort interpretuje przyrostki czytelne dla człowieka.
84
84
84
2010-07-29 12:07:31 +0000

Często muszę znaleźć największe katalogi, więc aby uzyskać posortowaną listę zawierającą 20 największych dirsów, robię to:

du -m /some/path | sort -nr | head -n 20

W tym przypadku rozmiary zostaną podane w megabajtach.

24
24
24
2015-12-24 10:07:52 +0000

Lubię używać do tego Ncdu , możesz użyć kursora do nawigacji i przewiercić się przez strukturę katalogów, która działa naprawdę dobrze.

12
12
12
2012-11-22 16:53:04 +0000

Istniejące odpowiedzi są bardzo pomocne, być może niektórzy początkujący (jak ja) również uznają to za pomocne.

  1. Bardzo podstawowa pętla, ale dla mnie był to dobry początek dla kilku innych operacji związanych z wielkością:

  2. Bardzo podobny do pierwszej odpowiedzi i prawie taki sam wynik jak 1.), ale zajęło mi trochę czasu zrozumienie różnicy * do ./* jeśli w podkatalogu:

9
9
9
2010-07-11 17:29:10 +0000

Następujące wywołanie du powinno działać na systemach BSD:

du -d 1 /
5
5
5
2015-07-24 11:04:13 +0000

To nie jest łatwe. Polecenie du pokazuje albo pliki i foldery (domyślnie) albo po prostu rozmiary wszystkich elementów, które podasz w linii poleceń (opcja -s).

Aby uzyskać największe elementy (pliki i foldery), posortowane, z ludzkimi rozmiarami czytelnymi w Linuksie:

du -h | sort -h

To pogrzebie Cię w tonie małych plików. Możesz się ich pozbyć za pomocą --threshold (1 MB w moim przykładzie):

du --threshold=1M -h | sort -h

Zaletą tej komendy jest to, że zawiera ukryte foldery punktowe (foldery, które zaczynają się od .).

Jeśli naprawdę chcesz tylko te foldery, musisz użyć find, ale może to być bardzo, bardzo powolne, ponieważ du będzie musiał przeskanować wiele folderów kilka razy:

find . -type d -print0 | sort -z | xargs --null -I '{}' du -sh '{}' | sort -h
2
2
2
2013-10-05 15:36:58 +0000

Bądź świadomy, że nie możesz porównywać katalogów z du na różnych systemach/maszynach bez upewnienia się, że oba mają ten sam rozmiar bloku systemu plików. To może się liczyć, jeśli zsynchronizujesz niektóre pliki z maszyny linuksa do nas i chcesz porównać zsynchronizowane katalogi na własną rękę. Możesz uzyskać różne wyniki z du z powodu różnych wielkości blokowych…

1
1
1
2010-07-12 19:42:17 +0000

Możesz też sprawdzić xdiskusage . Da ci te same informacje, ale przedstawione graficznie, plus pozwala na przewierty (bardzo przydatne). Istnieją inne podobne narzędzia dla KDE, a nawet Windows.

1
1
1
2016-12-20 09:56:34 +0000

Możesz użyć ls w połączeniu z awk:

ls -al * | awk 'BEGIN {tot=0;} {tot = tot + $5;} END {printf ("%.2fMb\n",tot/1024/1024);}'

Wyjście z ls jest przesyłane do awk. awk rozpoczyna przetwarzanie danych. Standardowym ogranicznikiem jest przestrzeń. Zmienna sumaryczna tot jest inicjowana do zera; poniższe wyrażenie jest wykonywane dla każdego wiersza/linii wyprowadzonej przez ls. Jest to tylko przyrost tot o wielkość. $5 oznacza piątą kolumnę (otrzymaną przez ls). Na koniec dzielimy przez (1024*1024) do sumy w megabajtach.

Jeśli zamieniłbyś to na skrypt lub funkcję (.bashrc), możesz również użyć jej do uzyskania rozmiaru pewnych podzbiorów katalogów, zgodnie z typami plików.

Jeśli chcesz uzyskać informacje o systemie, kdirstat może się przydać!