Powiedzmy, że chcę uzyskać rozmiar każdego katalogu systemu plików Linux. Kiedy używam ls -la
, tak naprawdę nie otrzymuję podsumowanego rozmiaru folderów.
Jeśli używam df
, otrzymuję rozmiar każdego podłączonego systemu plików, ale to też mi nie pomaga. I dzięki du
otrzymuję rozmiar każdego podkatalogu i podsumowanie całego systemu plików.
Ale chcę mieć tylko podsumowany rozmiar każdego katalogu w folderze ROOT systemu plików. Czy jest jakieś polecenie, aby to osiągnąć?
--total
Flag było pomocne dla mnie. Npdu -sh --total applications/*
. askubuntu.com/a/465436/48214Odpowiedzi:
Robi to, czego szukasz:
Co to znaczy:
-s
aby podać tylko sumę dla każdego argumentu wiersza poleceń.-h
dla sufiksów czytelnych dla człowieka, takich jakM
megabajty iG
gigabajty (opcjonalnie)./*
po prostu rozwija się do wszystkich katalogów (i plików) w/
.Uwaga: pliki dotf nie są uwzględniane; biegnij,
shopt -s dotglob
aby uwzględnić również te.Przydatne jest również sortowanie według rozmiaru:
Tutaj:
-h
zapewniasort
poprawną interpretację sufiksów czytelnych dla człowieka.źródło
shopt -s dotglob
aby uwzględnić je w liczbie./*
, np../
Dla bieżącego katalogu lub./*
dla każdego elementu w bieżącym katalogu../*/
aby uzyskać tylko podfoldery, a nie wszystkie elementydu -sh /* | sort -h
sort
nie masz-h
, musisz to również pominąćdu
, w przeciwnym razie sortowanie będzie mieszało kilo / mega / gigabajty.du -s /* | sort -nr
.Często muszę znaleźć największe katalogi, więc aby uzyskać posortowaną listę zawierającą 20 największych katalogów, robię to:
W takim przypadku rozmiary będą zgłaszane w megabajtach.
źródło
Lubię do tego używać Ncdu , możesz używać kursora do nawigacji i przeglądania struktury katalogów, którą działa naprawdę dobrze.
źródło
b
aby upuścić do powłoki w katalogu.Istniejące odpowiedzi są bardzo pomocne, być może niektórzy początkujący (tacy jak ja) również uznają to za pomocne.
Bardzo prosta pętla, ale dla mnie był to dobry początek dla niektórych innych operacji związanych z rozmiarem:
Bardzo podobny do pierwszej odpowiedzi i prawie taki sam wynik jak 1.), ale zajęło mi trochę czasu, aby zrozumieć różnicę * do ./*, jeśli w podkatalogu:
źródło
for each
nie działa, ponieważ dodaje znaki konsoli (np.\033[
) do listy folderówfor each
. to nie zadziałaNastępujące
du
wywołanie powinno działać w systemach BSD:źródło
du
(Ubuntu 10.4) nie ma-d
opcji. W jakim systemie jesteś?du -sk /*
. Tak bardzo nienawidzę tych-k
rzeczy. Linux „-h
totalnie kołysze”.--max-depth
To nie jest łatwe.
du
Komenda albo pokazuje pliki i foldery (domyślne) lub tylko rozmiary wszystkich elementów, które można określić w wierszu poleceń (opcja-s
).Aby uzyskać największe elementy (pliki i foldery) posortowane według rozmiarów czytelnych dla ludzi w systemie Linux:
To pochowa cię w tonie małych plików. Możesz się ich pozbyć za pomocą
--threshold
(1 MB w moim przykładzie):Zaletą tego polecenia jest to, że zawiera ukryte foldery kropkowe (foldery zaczynające się od
.
).Jeśli naprawdę chcesz tylko foldery, musisz użyć,
find
ale może to być bardzo, bardzo wolne, ponieważdu
będziesz musiał skanować wiele folderów kilka razy:źródło
Należy pamiętać, że nie można porównywać katalogów z
du
różnymi systemami / maszynami bez upewnienia się, że oba mają taki sam rozmiar systemu plików. Może się to liczyć, jeśli zsynchronizujesz niektóre pliki z komputera z systemem Linux do systemu nas i chcesz samodzielnie zsynchronizować katalog. Możesz uzyskać różne wyniki zdu
powodu różnych rozmiarów bloków ....źródło
Możesz także sprawdzić xdiskusage . Podadzą ci te same informacje, ale przedstawione graficznie, a także pozwalają na drążenie w dół (bardzo przydatne). Istnieją inne podobne narzędzia dla KDE, a nawet Windows.
źródło
Możesz użyć
ls
w połączeniu zawk
:Dane wyjściowe
ls
są przesyłane doawk
.awk
rozpoczyna przetwarzanie danych. Standardowym ogranicznikiem jest spacja. Zmiennatot
sumowa jest inicjowana na zero; następująca instrukcja jest wykonywana dla każdego wiersza / wiersza wyprowadzonego przezls
. Po prostu zwiększa siętot
wraz z rozmiarem.$5
oznacza piątą kolumnę (wyprowadzoną przezls
). Na koniec dzielimy przez (1024 * 1024), aby zsumować w megabajtach.Jeśli chcesz przekonwertować to na skrypt lub funkcję (.bashrc), możesz również użyć go do uzyskania rozmiaru niektórych podzbiorów katalogów, zgodnie z typami plików.
Jeśli potrzebujesz informacji o całym systemie,
kdirstat
może się przydać!źródło