Wymień rozmiary bieżących folderów w terminalu?

134

Chcę listę folderów z bieżącego katalogu lub jednego, który określam ich rozmiarem.

Próbowałem z du, ale otrzymuję tylko rozmiar katalogów, które określam (du. ./F1), a ls nie pokazuje rozmiaru folderów.

Jak to zrobić bez skryptów?

Kevin
źródło
nie brzmi jak palant, ale „man du”;)
Jakub
5
Dzięki ;-), ale już próbowałem i nic nie znalazłem. I wypróbuj Googling du!
kevin

Odpowiedzi:

212

Jeśli chcesz wyświetlić wszystkie katalogi w bieżącym katalogu:

$ du -sh */
788K    foo/
500K    bar/
931K    baz/

Aby pokazać je zaczynając od innego katalogu:

$ du -sh /path/to/dir/*/
48K     /path/to/dir/dir1/
4.0K    /path/to/dir/dir2/
6.7M    /path/to/dir/dir3/
20K     /path/to/dir/dir4/
8.0K    /path/to/dir/dir5/
44K     /path/to/dir/dir6/

Jeśli chcesz się upewnić, że uwzględniono katalogi z nazwami rozpoczynającymi się od kropki, zrób to shopt -s dotglobnajpierw.

Dennis Williamson
źródło
Dzięki wszystkim świetnym odpowiedziom, ale ta jest najprostsza. Zapomniałem zakończenia / w moich testach.
kevin
1
Gdzie -s oznacza podsumowanie, wyświetl sumę, a -h oznacza czytelność dla człowieka
wranvaud
2
Sortować foldery według wielkości: du -s */ | sort -n.
Anton Tarasenko,
1
@AntonTarasenko: Sortuj rozmiary czytelne dla ludzi
Dennis Williamson,
1
@AntonTarasenko: shopt -s dotglob doc
Dennis Williamson
18

Na komputerze Mac opcja --max-depth jest zastępowana przez -d [depth]. Tak więc, aby zobaczyć czytelną dla człowieka listę twojego dysku głównego oraz głębokość 2 poziomów, użyj następujących czynności:

du -hd 2 /* 

Uwaga: to polecenie ujawni dwa najwyższe poziomy katalogu poza katalogiem głównym. Obejmuje to przejście o jeden poziom do twoich woluminów i wyświetli listę rozmiarów podsumowania każdego katalogu najwyższego poziomu w każdym z dołączonych woluminów. W zależności od tego, co załączyłeś, wykonanie tego polecenia może zająć trochę czasu.

jadik
źródło
13

Innym podejściem jest opcja --max-depth.

du -h --max-depth=1 .

Wyświetli listę wszystkich katalogów i plików w bieżącym folderze wraz z rozmiarem.

Głębia 2 wyświetli jeszcze jeden poziom folderów.

Matthias Krull
źródło
4
Na Macu jest to du -hd 2 .2 poziomy głębi.
Ryan
O tak. I prawdopodobnie także na FreeBSD. Dzięki za informację.
matthias krull
5

Próbować:

$ du -s ./f1

lub

$ du -sh ./f1

dla bardziej przyjaznych czytelnych rozmiarów.

Doug Harris
źródło
2

$ du --max-depth=1 /var/www/ | sort -n -r

Andre Mesquita
źródło
3
Dodając odpowiedź do starszego pytania z istniejącymi odpowiedziami, dobrą praktyką jest wyjaśnienie, w jaki sposób twoja odpowiedź jest inna, i dołączenie wyjaśnienia, aby nie była to odpowiedź wyłącznie na polecenie.
Jason Aller
3
Czy potrafisz rozwinąć swoją odpowiedź, aby wyjaśnić, jakie są parametry?
fixer1234
2

Warto wspomnieć o poleceniu powłoki Użycie dysku NCurses .

Ncdu to analizator użycia dysku z interfejsem ncurses. Jest przeznaczony do znajdowania kosmicznych świń na zdalnym serwerze, na którym nie masz dostępnej całej konfiguracji graficznej, ale jest to przydatne narzędzie nawet w zwykłych systemach komputerowych. Ncdu ma być szybki, prosty i łatwy w użyciu i powinien być w stanie działać w każdym minimalnym środowisku podobnym do POSIX z zainstalowanymi ncurses.

Promień
źródło
2

Opierając się na zaakceptowanej odpowiedzi, to polecenie pokaże ci rozmiary folderów w katalogu, a także wyświetli listę według rozmiaru, aby łatwiej interpretować:

$ du -sh */ | sort -rn
Ethan
źródło
1

Na Macu możesz zainstalować implementację GNU (Linux) duz Homebrew ( brew install coreutils). Następnie na przykład:

gdu folder -shL --exclude=.git

gdzie

  • gduto nazwa nadana implementacji GNU du(domyślnie Homebrew się nie ukrywa /usr/bin/du);
  • s tworzy sumę całkowitą dla określonego folderu (pomiń, jeśli chcesz zobaczyć podział);
  • h generuje rozmiary czytelne dla człowieka;
  • L podąża za dowiązaniami symbolicznymi;
  • --exclude=.git wyklucza katalog git w określonym folderze (to tylko przykład).

Możesz zignorować więcej folderów, dodając --exclude=blah. Możesz także określić kilka folderów jednocześnie (tj. gdu folder1 folder2 ...), W takim przypadku możesz połączyć wszystkie sumy częściowe w jeden rozmiar za pomocą opcji c.

Sheljohn
źródło
1

Oto skrypt POSIX, który będzie działał z:

  • Plik
  • Akta
  • Katalog
  • Katalogi
#!/bin/sh
ls -ARgo "$@" | awk '{q += $3} END {print q}'

Źródło

Steven Penny
źródło