Próbowałem uzyskać rozmiar katalogu (zawierającego katalogi i podkatalogi) za pomocą ls
polecenia z opcją l
. Wygląda na to, że działa dla plików ( ls -l file name
), ale jeśli spróbuję uzyskać rozmiar katalogu (na przykład ls -l /home
), otrzymam tylko 4096 bajtów, chociaż w sumie jest on znacznie większy.
command-line
ls
disk-usage
Abdul Al Hazred
źródło
źródło
-h
opcję, którą możesz dodać do-l
opcji (tj.ls -lh
), aby uzyskać rozmiary plików do wydrukowania w przyjaznej dla ludzi notacji, takiej jak 1,1M zamiast 1130301. „h ”wdu -hs
poleceniu, które @sam podał jako odpowiedź na pytanie dotyczące katalogów, oznacza również„ czytelny dla człowieka ”, a takżedf -h
pokazuje, w którym czytelnych dla człowieka ilości używanego i wolnego miejsca na dysku.Odpowiedzi:
du -sh file_path
Wyjaśnienie
du
Komenda ( d isc u sage) szacuje użycie miejsca na ścieżkę_plikuDostępne
-sh
są następujące opcje (odman du
):Aby sprawdzić więcej niż jeden katalog i zobaczyć sumę, użyj
du -sch
:źródło
du
a także dajesz drogę do szukania dalszych szczegółówman du
...find
np. Do zliczania ilości miejsca w określonych podkatalogach na bieżącej ścieżce:$ find . -type d -name "node_modules" -prune -exec du -sh {} \;
Wystarczy użyć
du
polecenia:da ci łączne wykorzystanie dysku przez wszystkie nie ukryte katalogi, pliki itp. w bieżącym katalogu w formacie czytelnym dla człowieka.
Możesz użyć
df
polecenia, aby poznać wolne miejsce w systemie plików zawierającym katalog:źródło
du -sh *
zaczyna zgłaszać błędy „nieznana opcja”, jeśli którykolwiek z plików w tym katalogu zaczyna się od myślnika. Bezpieczniej zrobićdu -sh -- *
du -sh *
nie pokazuje użycia pamięci przez ukryte folderydu -sh -- * .*
dołączyć pliki dot. Przydatne jest na przykład włączenie możliwie dużego.git
katalogu. Alternatywnie w zsh możeszsetopt globdots
domyślnie globować pliki dot.--
zrobić? Wiem, że dotyczy to wbudowanych powłok do argumentów opcji końcowych, aledu
nie jest wbudowane i nie widzę tego użycia udokumentowanego dladu
: linux.die.net/man/1/du-b
(--apparent-size
)du
jest twoim przyjacielem. Jeśli chcesz tylko poznać całkowity rozmiar katalogu, wskocz do niego i uruchom:Jeśli chcesz również wiedzieć, które podfoldery zajmują tyle miejsca na dysku ?! Możesz rozszerzyć to polecenie na:
co da ci rozmiar wszystkich podfolderów (poziom 1). Dane wyjściowe zostaną posortowane (największy folder na górze).
źródło
ncdu
z plików, domyślnie są sortowane według malejącego rozmiaru.du
może być skomplikowane w użyciu, ponieważ pozornie musisz przekazać 100 argumentów, aby uzyskać przyzwoitą wydajność. Ustalenie rozmiaru ukrytych folderów jest jeszcze trudniejsze.Uczyń swoje życie łatwym i łatwym w użyciu
ncdu
.Otrzymujesz podsumowania folderów, które można łatwo przeglądać.
źródło
ncdu
jest świetne, zawsze szukam tego polecenia, gdy zapomnę. Jest szybki, łatwy w nawigacji i pomaga łatwo znajdować duże foldery. Do Twojej wiadomości, jest również dostępny dla systemu macOS i prawdopodobnie dla wszystkich komputerów z systemem Linux.ncdu
, naciskającd
klawiszInni wspominali
du
, ale chciałbym też wspomnieć o Ncdu - która jest wersją ncursesdu
i zapewnia interaktywność: Możesz bezpośrednio odkryć hierarchię katalogów i zobaczyć rozmiary podkatalogów.źródło
du
Komenda pokazuje użycie dysku pliku.-h
Wariant przedstawiono wyniki w postaci czytelnej dla człowieka (na przykład, 4k, 5M, 3G).źródło
Wszystkie powyższe przykłady podadzą rozmiar danych na dysku (tj. Ilość miejsca na dysku, z którego korzysta dany plik, który jest zwykle większy niż rzeczywisty rozmiar pliku). Istnieją sytuacje, w których nie dają dokładnego raportu, jeśli dane nie są faktycznie przechowywane na tym konkretnym dysku i istnieją tylko odwołania do i-węzłów.
W twoim przykładzie użyłeś ls -l na pojedynczym pliku, który zwróci rzeczywisty rozmiar pliku, a NIE jego rozmiar na dysku.
Jeśli chcesz poznać rzeczywiste rozmiary plików, dodaj opcję -b do du.
źródło
osobiście uważam, że najlepiej, jeśli nie chcesz używać
ncdu
źródło
To pokazuje, ile miejsca pozostało na bieżącym dysku, a następnie informuje, ile zajmuje każdy plik / katalog. na przykład,
źródło
Używam tego polecenia jako root :
źródło
znajdź rekursywnie wszystkie pliki w bieżącym katalogu i podsumuj ich rozmiar:
źródło
-not -type d
do sumowania nie tylko rozmiarów zwykłych plików (-type f
), ale także rozmiarów dowiązań symbolicznych i tak dalej.Oto funkcja dla twoich .bash_aliases
próbka wyjściowa:
dla podkatalogów:
źródło
Jeszcze jeden wariant:
źródło
Zauważ, że
du
drukuje miejsce, które katalog zajmuje na nośniku, które jest zwykle większe niż całkowity rozmiar wszystkich plików w katalogu, ponieważdu
bierze pod uwagę rozmiar wszystkich informacji pomocniczych przechowywanych na nośniku w celu uporządkowania katalogu zgodnie w formacie systemu plików.Jeśli system plików jest kompresowalny,
du
może wygenerować jeszcze mniejszą liczbę niż całkowity rozmiar wszystkich plików, ponieważ pliki mogą być wewnętrznie skompresowane przez system plików, a zatem zajmują mniej miejsca na nośniku niż tylko nieskompresowane informacje, które zawierają. To samo, jeśli istnieją rzadkie pliki.jeśli w katalogu znajdują się twarde łącza,
du
może również wydrukować mniejszą wartość, ponieważ kilka różnych plików w katalogu odwołuje się do tych samych danych na nośniku.Aby uzyskać bezpośredni całkowity rozmiar wszystkich plików w katalogu, można użyć następującego jednowierszowego wyrażenia powłoki (przy założeniu systemu GNU):
lub nawet krócej:
Po prostu sumuje rozmiary wszystkich plików innych niż katalogowe w katalogu (i jego podkatalogach rekurencyjnie) jeden po drugim. Zauważ, że w przypadku dowiązań symbolicznych podaje rozmiar dowiązania symbolicznego (nie pliku, na który wskazuje dowiązanie symboliczne).
źródło
Możesz użyć
du -sh directory/
i
du -sh filename
znać miejsce zajmowane przez folder lub plik.
df -h
pokaże użycie dysku w formacie czytelnym dla człowieka - h to robi.
Istnieje również program o nazwie GUI
Disk Usage Analyzer
.źródło
Oto skrypt POSIX, który będzie działał z:
Źródło
źródło