To pytanie ma już odpowiedź tutaj:
Jakiego polecenia używam, aby znaleźć rozmiar wszystkich plików (rekurencyjnie) w katalogu Linux lub Mac OS X?
linux
macos
mac
command-line
Daryl Spitzer
źródło
źródło
-k
opcji użycia rozmiaru bloku 1K-bajtdu
, używamncdu
, można znaleźć odniesienie tutaj, remysharp.com/2018/08/23/cli-improvedOdpowiedzi:
Wersja BSD
du
używana w OS X podaje rozmiar bloków 512-bajtowych - rozmiary są zasadniczo zaokrąglane w górę do następnej wartości 512-bajtowej. Mówi ci to miejsce na dysku, które jest większe niż ilość danych. Jeśli masz dużo małych plików, różnica może być duża.Oto przykład.
Jest to wartość regularna
du
. Jest w 512-bajtowych blokach:Te
-h
wyniki flag w wielu bardziej czytelne, w kilobajtach. Zgodnie z oczekiwaniami jest to połowa liczby 512-bajtowych bloków:Na koniec możesz użyć
find
iawk
podać sumę rzeczywistych bajtów w plikach. Jest to trochę powolne, ale działa:Ta wartość odpowiada dokładnie liczbie podanej w oknie Get Info Get Info. (W tym zestawie plików nie ma dziwnych widelców ani xattrów.) Jest znacznie mniejszy niż wartość zgłaszana przez
du
.Oto jak to działa: pobiera listę wszystkich plików i przekazuje je do
ls -l
; następnieawk
służy do zliczania bajtów.-type f
Flaga jest tak, że tylko pliki (a nie katalogi) wysyłane dols
. Bez tej flagi wyśle również nazwy katalogówls
, a każdy plik będzie wymieniony dwukrotnie: raz jako pojedynczy plik i raz jako element w katalogu.Wersja GNU
du
może podawać wartości w rzeczywistych bajtach zamiast bloków. Szkoda, że wersja BSDdu
nie jest tak elastyczna.źródło
du
z GNU coreutils z-b
opcją, otrzymuję inny wynik niż z twojąfind
fajką. W przypadku katalogu o pojemności 36 GB różnica wynosi 82 KB.Pokaż rozmiar pojedynczego pliku
du -h path_to_a_file
Pokaż rozmiar zawartości katalogu, każdego podkatalogu i każdego pojedynczego pliku:
du -h path_to_a_directory
Pokaż rozmiar zawartości katalogu:
du -sh path_to_a_directory
źródło
du -sch
jeśli chcesz czegoś łatwiejszego do odczytania.du - informuje, że dysk nie używa rozmiaru pliku .
powyższy kod terminala (im na OSX 10.6) oferuje mi najlepszy wynik i jest o wiele szybszy niż „find ... -exec”
szybki punkt odniesienia
źródło
find . -type f -print0 | xargs -0 stat -c%s | awk '{b+=$1} END {print b}'
Możesz użyć,
du -ah .
który rekurencyjnie wyświetla rozmiary wszystkich plików i katalogów.Można to połączyć
sort
, dzięki czemu zobaczysz 20 największych katalogów w bieżącym folderze:Uwaga: Opcja
-h
dlasort
nie jest dostępna w OSX / BSD, więc musisz zainstalowaćsort
zcoreutils
(np. Przezbrew
) i zastosować ścieżkę binPATH
, np.W przeciwnym razie użyj:
źródło
brew install coreutils
przeciwnym razie użyj polecenia BSD sort na końcu bez-h
.Połączyłem wszystkie twoje podejścia i połączyłem je z czytelnym dla człowieka wynikiem, w wyniku czego:
Link do treści: https://gist.github.com/mlegenhausen/9365461
źródło