Szukam poręcznego jedno-liniowego narzędzia do obliczania średniego rozmiaru pliku w katalogu.
Chcę to:
rozmiar wszystkich plików / liczba plików w katalogu
bash
command-line
tafer
źródło
źródło
Odpowiedzi:
Z FreeBSD / Mac OS X
find
,stat
iawk
(nie dokładnie poręcznej jedną wkładką chociaż):źródło
-v var=value
,awk
poszerzy sekwencje ANSI C, jak\n
,\r
... Podczas muszle zrobić eksportPWD
, dzięki czemu można korzystaćENVIRON["PWD"]
wawk
których nie ma tego rodzaju problem dla katalogów zawierających backslashy w ich imieniu.find . -type f -exec stat -f%z {} +|awk '{s+=$0}END{print s/NR}'
.Z GNU znajdź:
Lub do użycia dysku:
Zauważ, że jeśli jest tam kilka dowiązań twardych tego samego pliku, policzy to użycie jego dysku kilka razy.
Powyższe dotyczy tylko zwykłych plików, a nie dowiązań symbolicznych, katalogów lub innych plików specjalnych. Zawiera ukryte pliki.
To samo z
zsh
wbudowanymi:źródło
Uproszczone rozwiązanie w jednej linii:
Zawiera w sobie cheat składniowy, biorąc pod uwagę tylko
ls
linie wyjściowe zaczynające się od „-”, co powinno stanowić dane dla zwykłych plików.źródło
tylko dla plików w katalogu, ignorując podkatalogi:
Lub policzyć wszystkie pliki, w tym pliki w podkatalogach:
źródło
du -s
doda się na użycie dysku (nie rozmiar) wszystkich plików i katalogów i innych nieregularnych plików , z wyłączeniem dodatkowych twardych linków do tego samego pliku, natomiastfind
będą się liczyć wszystkie zwykłe pliki. Również nazwy plików ze znakami nowej linii będą liczone kilka razy.du -S
jest specyficzny dla GNU.du -s
zgłasza sektory lub kilobajty w zależności od systemu operacyjnego.