2012-02-08 14 views
15

Mam katalog z mnóstwem plików Chcę znaleźć średni rozmiar plików tych plików, więc coś jak ls coś gdzieś jaki jest średni rozmiar pliku z tego wszystkiego spełnia?Unix znajdź średni rozmiar pliku

+1

Prawdopodobnie powiązane z tym pytaniem (rozwiązanie prawdopodobnie do wyjścia potoku 'ls' w' awk' do uśredniania): http://stackoverflow.com/questions/2419690/average-and-maximum-size- of-katalogów – DNA

+0

Czy nie jest "ls -l"? – sinsedrix

+1

"kod" ls -l "kod" tak naprawdę nie sumuje ani nie cokolwiek oznacza. – Tony

Odpowiedz

30

Znalazłem coś tutaj:
http://vivekjain10.blogspot.com/2008/02/average-file-size-within-directory.html

Aby obliczyć średni rozmiar pliku w katalogu w systemie Linux, następujące polecenie można stosować:

ls -l | gawk '{sum += $5; n++;} END {print sum/n;}' 
+0

nie jestem pewien, ale to jest ważne, ale używam cygwin na pudełku W2K8 R2 ... – Tony

+1

Powinien działać, czy próbowałeś tego? ? Jeśli otrzymasz 'no gawk', zmień na 'awk' Powodzenia – shellter

+0

Nie wygląda na to, że cokolwiek przechodzi aż do następnej linii> – Tony

4

Użyj wc -c *, aby uzyskać rozmiar wszystkich plików i ls | wc -l, aby uzyskać liczbę plików. Następnie po prostu podziel jeden po drugim.

+0

nah Byłem loking dla jednego polecenia, jak zasugerował Ernstsson, ale cygwin nie wydaje się lubić tej składni :( – Tony

16

krótkiego, ogólnego i recursion- przyjazna zmiana odpowiedzi Ernstsson:

find ./ -ls | awk '{sum += $7; n++;} END {print sum/n;}' 

Lub, na przykład, jeśli Chcesz zablokować pliki powyżej 100 KB z duszenia średniej:

find ./ -size -100000c -ls | awk '{sum += $7; n++;} END {print sum/n;}' 
+0

@ A-B-B, co masz na myśli? To wszystko działa, używam go wiele razy. Podaj więcej szczegółów dotyczących problemu, ponieważ nie mam pojęcia, o czym mówisz. – cnst

+0

@ A-B-B "Wyrzucony przez bieżący katalog, jak również podkatalogi." - czy chcesz powiedzieć, że katalogi są uwzględniane przy obliczaniu wielkości? To bardzo celowe - powodem, dla którego napisałem ten skrypt, jest określenie średniego rozmiaru pliku dla małych plików (i katalogów) w celu określenia dobrego rozmiaru bloku lub fragmentu dla 'mfs' (w przeciwnym razie użyłbyś' -type f' z ['find'] (http://mdoc.su/o/find.1)). Stąd przykład '-size', uwzględniający tylko kilka dużych plików. Twoje -1 jest bardzo niezasłużone, a twoje narzekania, których nie testowałem, są niegrzeczne, szczególnie, że w odpowiedzi nie ma nic złego. – cnst

+1

Powód, dla którego go używasz jest interesujący, ale nie ma znaczenia. Jeśli chcę, aby średni rozmiar pliku, jak podano w pierwotnym pytaniu, prawdopodobnie nie chcę katalogów mających wpływ na tę liczbę, okres! Jeśli chodzi o -1, to nie tylko dla ciebie; wiodąca odpowiedź też. –

2

du -sh. # podaje całkowitą ilość miejsca używanego przez katalog: Znajdź. -type f | wc -l # policz liczbę plików

przeprowadź pierwszą przez sekundę. Jeśli chcesz jedną wkładkę, to jest tutaj:

echo $((`du -sb | tr '.' ' '`/`find . -type f | wc -l`)) 
+0

FYI, to używa du '-b odpowiednik dla '--papray-size --block-size = 1'' – Xen2050

1

one znalezienie wielkości katalogu i znalezienie ilość wolnego miejsca na dysku, która istnieje na komputerze. Polecenie, którego użyjesz do znalezienia rozmiaru katalogu, to "du". Aby znaleźć wolne miejsce na dysku, możesz użyć "df".

Wszystkie informacje zawarte w tym artykule są dostępne na stronach man dla du i df. Jeśli nudzisz się czytając strony podręcznika i chcesz szybko wykonać swoją pracę, ten artykuł jest dla Ciebie.

-

„du” - Znalezienie wielkości katalogu

$ du 

wpisując w wierszu powyżej daje listę katalogów, które istnieją w bieżącym katalogu wraz z ich wielkości. Ostatni wiersz danych wyjściowych podaje całkowity rozmiar bieżącego katalogu wraz z jego podkatalogami. Podany rozmiar obejmuje rozmiary plików i katalogów, które istnieją w bieżącym katalogu, a także wszystkie jego podkatalogi. Zwróć uwagę, że domyślnie podane rozmiary są w kilobajtach.

**$ du /home/david** 

Powyższe polecenie nie daje wielkość katalogów katalogu/home/david

**$ du -h** 

Komenda ta daje lepsze wyjście niż domyślny. Opcja "-h" oznacza format czytelny dla człowieka. Tak więc rozmiary plików/katalogów są w tym momencie oznaczone sufiksem "k", jeśli jest to kilobajt i "M", jeśli jego megabajty i "G", jeśli są gigabajtami.

**$ du -ah** 

Polecenie to wyświetliłoby w swoich wyjściach nie tylko katalogi, ale także wszystkie pliki znajdujące się w bieżącym katalogu. Zauważ, że "du" zawsze zlicza wszystkie pliki i katalogi, jednocześnie nadając ostateczny rozmiar w ostatnim wierszu. Ale -a wyświetla nazwy plików wraz z nazwami katalogów na wyjściu. "-h" to znów format czytelny dla człowieka.

**$ du -c** 

Daje to sumę całkowitą jako ostatnią linię danych wyjściowych. Jeśli więc twój katalog zajmuje 30 MB, ostatnie 2 linie wyjścia będą wynosić

30M. 30M całkowita

Pierwsza linia będzie domyślną ostatnią linią wyjścia "du" wskazującą całkowity rozmiar katalogu i inną linię o tym samym rozmiarze, a następnie napis "ogółem". Jest to pomocne w przypadku, gdy to polecenie wraz z poleceniem grep wyświetla tylko ostateczny całkowity rozmiar katalogu, jak pokazano poniżej.

**$ du -ch | grep total** 

Na wyjściu byłby tylko jeden wiersz, który wyświetla całkowity rozmiar bieżącego katalogu zawierającego wszystkie podkatalogi.

Uwaga: Jeśli nie znasz się na rurach (co sprawia, że ​​powyższe polecenie jest możliwe) zapoznaj się z artykułem nr 24. Również grep jest jednym z najważniejszych poleceń w systemie Unix. Zobacz artykuł nr 25, aby dowiedzieć się więcej o grep.

**$ du -s** 

Spowoduje to wyświetlenie podsumowania rozmiaru katalogu. Jest to najprostszy sposób poznania całkowitego rozmiaru bieżącego katalogu.

**$ du -S** 

Wyświetli rozmiar bieżącego katalogu z wyłączeniem rozmiaru podkatalogów istniejących w tym katalogu. Zasadniczo pokazuje całkowity rozmiar wszystkich plików znajdujących się w bieżącym katalogu.

**$ du --exculde=mp3** 

Powyższe polecenie wyświetli rozmiar bieżącego katalogu wraz ze wszystkimi jego podkatalogów, ale byłoby wykluczyć wszystkie pliki posiadające dany wzorzec obecny w ich nazwach. Tak więc w powyższym przypadku, jeśli zdarzają się pliki mp3 w bieżącym katalogu lub w jego podkatalogach, ich rozmiar nie zostanie uwzględniony przy obliczaniu całkowitego rozmiaru katalogu.

  • 'df' - znalezienie wykorzystanie wolnej przestrzeni na dysku/dysku

    $ df

wpisując powyżej, wyprowadza tabelę składającą się z 6 kolumn. Wszystkie kolumny są bardzo łatwe do zrozumienia. Pamiętaj, że kolumny "Rozmiar", "Używany" i "Dostępny" używają kilobajtów jako jednostki. Kolumna "Użyj%" pokazuje procent użycia, który jest również bardzo użyteczny.

**$ df -h** 

Wyświetla to samo wyjście co poprzednie polecenie, ale "-h" oznacza format czytelny dla człowieka. Stąd zamiast kilobajtów jako jednostki wynik miałby "M" dla megabajtów i "G" dla gigabajtów.

Większość użytkowników nie używa innych parametrów, które można przekazać do 'df'. Więc nie będę ich omawiać.

Ja z kolei pokażę przykład, którego używam na moim komputerze. Właściwie to zapisałem to jako skrypt o nazwie "użycie", ponieważ często go używam.

Przykład:

Mam Linux zainstalowany na/dev/hda1 i mam zamontowany moje partycje Windows, jak również (domyślnie przy każdym uruchomieniu systemu). Tak więc domyślnie "df" pokazuje użycie dysku dla mojego Linuxa, a także dla partycji Windows. Interesuje mnie tylko użycie dysku na partycjach Linuksa. To co mam użyć:

**$ df -h | grep /dev/hda1 | cut -c 41-43** 
wyświetlacze

Polecenie następujące na moim komputerze

45%

Zasadniczo ta komenda sprawia „df” wyświetla zwyczaje dyskowych wszystkich partycji, a następnie wyodrębnia linie z/dev/hda1, ponieważ jestem tym zainteresowany. Następnie przecina znaki od 41. do 43. kolumny, ponieważ są kolumnami wyświetlającymi użycie w%, czego właśnie chcę.

Istnieje kilka innych opcji, które mogą być używane z "du" i "df". Można je znaleźć na stronach man.

Powiązane problemy