Jak mogę obliczyć rozmiar katalogu?

181

Jak poznać rozmiar katalogu? W tym podkatalogi i pliki.

Juanjo Conti
źródło

Odpowiedzi:

230
du -s directory_name

Lub, aby uzyskać wynik czytelny dla człowieka:

du -sh directory_name

Ta -sopcja oznacza, że ​​nie będzie wyświetlać rozmiaru dla każdego podkatalogu, tylko całkowity rozmiar.

sepp2k
źródło
7
W rzeczywistości dudomyślną jednostką są 512-bajtowe bloki zgodne z POSIX i kilobajty w Linuksie (chyba że zmienna środowiskowa POSIXLY_CORRECTjest ustawiona) lub z du -k.
Gilles,
3
@Gilles: Dobry połów. Usunąłem bit „liczba bajtów” z mojej odpowiedzi.
sepp2k
1
pracował zgodnie z zaleceniami
skidadon
1
jeśli katalog jest bardzo duży i ma wiele podkatalogów, zajmuje dużo czasu ... prawie 1 min .. czy to normalne? czy istnieje sposób na szybsze uzyskanie rozmiaru?
yeahman,
2
Musiałem obliczyć rozmiar mojej „torby” folderu, du -sh bagdziałał idealnie!
António Almeida
7

Chociaż korzystanie z osobnego pakietu, takiego jak ncdu, może działać dobrze, to samo porównanie wielu folderów można do pewnego stopnia, po prostu podając listę folderów do powiększenia. Na przykład, aby porównać katalogi najwyższego poziomu w systemie ...

cd /    
sudo du -sh ./*
NFlourish
źródło
2
Mówiąc prościejdu -sh /*
roaima,
7

GNU duwybiera -bopcję.

Więcej informacji na manstronie i infostronie :

-b, --bytesjest równoważne z--apparent-size --block-size=1

użytkownik2573436
źródło
1
du -csh

-c tworzy sumę całkowitą

Kalpesh Soni
źródło
1
-cNie ma sensu używać razem z -s, prawda? -swyświetla tylko rozmiar określonego katalogu, czyli całkowity rozmiar katalogu.
Andreas Storvik Strauman
1

Próbować

du -hax --max-depth=1 / | grep '[0-9]G' | sort -nr

Pomaga to znaleźć duże katalogi, a następnie przesiać je za pomocą du -sh ./*

rollinjack
źródło
0

możesz także użyć ls -ldh:

ls -ldh /etc drwxr-xr-x 145 root root 12K 2012-06-02 11:44 /etc

-l jest na długiej liście; -d służy do wyświetlania informacji o katalogu, a nie do zawartości katalogu, -h służy do wyświetlania rozmiaru w formacie czytelnym dla huma.

fromnaboo
źródło
4
To nie jest poprawne, osoba pytająca wyraźnie szuka miejsca w katalogu i jego zawartości na dysku. Odpowiedź @ sepp2k jest poprawna.
blong
1
Komenda ls -ldh pokazuje tylko rozmiar struktury i-węzła katalogu. Metryka odzwierciedla wielkość tabeli indeksów nazw plików, ale nie rzeczywisty rozmiar zawartości pliku w katalogu.
linbianxiaocao
0

Zawsze instaluję pakiet „ncdu” i widzę wszystkie dane wyjściowe wszystkich katalogów z graficzną reprezentacją. Wynika to z faktu, że zazwyczaj muszę wiedzieć, co zajmuje najwięcej miejsca na dysku na moich komputerach, niezależnie od tego, ile zsumuje pojedynczy katalog.

Sposób użycia: sudo ncdu /(Nie potrzebujesz sudofolderów, do których masz uprawnienia do odczytu).

Trwa skanowanie statystyk użytkowania dysku w całym systemie plików. Ma ładną graficzną reprezentację wiersza poleceń i zawiera nawigację za pomocą klawiatury za pomocą klawiszy strzałek, takich jak wchodzenie głębiej lub wyżej na zeskanowanej ścieżce. Możesz także usunąć elementy, naciskając D.

Etescartz
źródło
0

Możesz użyć „file-size.sh” z biblioteki awk Velor :

ls -ARgo "$@" | awk '{q += $3} END {print q}'
Steven Penny
źródło
0

du -hd1

wyświetli w formacie czytelnym dla człowieka rozmiary wszystkich katalogów, np

656K    ./rubberband
2.2M    ./lame
652K    ./pkg-config
Boris Yakubchik
źródło
0

Próbowałem z poniższym poleceniem, ponieważ podano już najlepszą odpowiedź

sudo find . -maxdepth 1 -exec du -shk {} \;| awk 'NR >1'| awk 'BEGIN{sum=1}{sum=sum+$1}END{print sum}'

wynik

 sudo find . -maxdepth 1 -exec du -shk {} \;| awk 'NR >1'| awk 'BEGIN{sum=1}{sum=sum+$1}END{print sum}'

679445
Praveen Kumar BS
źródło