Potrzebuję uzyskać rozmiar katalogu w terminalu do celów podpisywania. Używam następującego polecenia:
du -s /path/to/dir
Mnożę wynik przez tradycyjny rozmiar bloku UNIX (512 bajtów) i otrzymuję rzeczywisty rozmiar katalogu w bajtach. Jednak okno dialogowe „Uzyskaj informacje” Findera pokazuje rozmiar nieco mniejszy niż rozmiar obliczony za pomocą polecenia terminalu. I wygląda na to, że można go odtworzyć w dowolnym folderze / pakiecie. czego mi brakuje?
źródło
actual
lubapparent
. (Zobacz także moje zaktualizowane wyjaśnienie).O systemie Mac OS X i Finderze (w Snow Leopard, wersja 10.6.8) zauważyłem, co następuje.
bash
(1)) poniżej.Jak dotąd widziałem, że moje „skwantyfikowane” liczby są takie same, jak „skwantyfikowane” liczby w Finderze .
BLOCKSIZE
w mojej powłoce, ale przetestowałem (teraz trochę) obie wersje i wartości domyślne dla$BLOCKSIZE
tych samych wartości.Jedyne, co mogę powiedzieć, to to, że zbliżam się tylko przez zliczanie plików (tym samym wykluczając katalog ~ 'system plików meta indeks / nagłówek' ~ dane) i że najbliższe mi jest to, co następuje.
du
(1), ani (gnu)gdu
(1) nie uwzględniają atrybutów rozszerzonych (xattr
)A potem muszę tylko wykasować: „Biegnij ścieżką i zrób matematykę”.
Tym razem pokój i dobranoc.
źródło
W moim systemie Ubuntu, przy użyciu ext4,
du -b file
podaje rozmiar w bajtach rzeczywistego pliku idu -b dir
podaje rozmiar w bajtach pliku (plików) + narzut katalogu, Narzut jest w moim przypadku wielokrotnością 4096 bajtów ..Obciążenie to rośnie wraz ze wzrostem liczby plików.
Uwaga: nawet jeśli pliki zostaną usunięte, narzut katalogu pozostanie na wyższym poziomie, na którym znajdował się przed usunięciem plików.
Nie próbowałem ponownie uruchamiać się, aby zobaczyć, czy przywraca się, ale w obu przypadkach oznacza to, że rozmiar katalogu różni się w zależności od okoliczności historycznych.
Tallying każdego rozmiaru pliku może być najlepszą opcją dla dokładnej wartości całkowitych rozmiarów plików .
Poniższy skrypt sumuje wszystkie rozmiary plików (w bajtach) ..
W przypadku OS X, jeśli nie masz
-b
opcji „du”, możeszstat
zamiast tego użyć (jeśli masz :) ... Skomentowana linia pokazujestat
alternatywę dla Ubuntudu -b
;źródło
du -b
i jest innystat
. Twój skrypt nie jest przenośny poza Linuksem.coreutils
aby uzyskać wersję GNUdu
asgdu
. Więc nie jest do końca przenośny, ale może być użyteczny dla osób w OS X, aby uzyskać wersje GNU kilku podstawowych narzędzi.Zsumuj wszystkie pliki w katalogu:
OSX:
find dir ! -type d -print0 | xargs -0 stat -f '%z' | awk '{sum += $1} END{print sum}'
Linux:
find dir ! -type d -printf "%s\n" | awk '{sum += $1} END{print sum}'
źródło
find: unrecognized: -printf
. Obraz alpejski