Na serwerze Linux, z którym pracuję, proces zapisuje losowo wybrane pliki w losowych odstępach czasu. Oto mała próbka, pokazując rozmiar pliku, data modyfikacji & czas, a nazwa pliku:Jak sumować rozmiary plików w bashach, grupując wyniki według daty?
27659 2009-03-09 17:24 APP14452.log
0 2009-03-09 17:24 vim14436.log
20 2009-03-09 17:24 jgU14406.log
15078 2009-03-10 08:06 ySh14450.log
20 2009-03-10 08:06 VhJ14404.log
9044 2009-03-10 15:14 EqQ14296.log
8877 2009-03-10 19:38 Ugp14294.log
8898 2009-03-11 18:21 yzJ14292.log
55629 2009-03-11 18:30 ZjX14448.log
20 2009-03-11 18:31 GwI14402.log
25955 2009-03-12 19:19 lRx14290.log
14989 2009-03-12 19:25 oFw14446.log
20 2009-03-12 19:28 clg14400.log
(Należy pamiętać, że czasami rozmiar pliku może wynosić zero.)
Chciałbym to skrypt bash Podsumowując wielkość plików, w podziale według daty, produkujących wyjściowe coś jak to (zakładając, że moja arytmetyka jest poprawna):
27679 2009-03-09
33019 2009-03-10
64527 2009-03-11
40964 2009-03-12
wyniki wykaże tendencje aktywności w czasie, i podkreślają wyjątkowo zajęty dzień.
W SQL, operacja byłaby Cinch:
SELECT SUM(filesize), filedate
FROM files
GROUP BY filedate;
Teraz to wszystko prawdopodobnie całkiem łatwa w Perl lub Python, ale tak naprawdę wolą powłoki bash lub roztwór awk. Szczególnie trudne wydaje mi się pogrupowanie plików według daty w bashu (szczególnie, jeśli nie można przyjąć określonego formatu daty). Podsumowując, rozmiary mogłyby być wykonane w pętli, jak sądzę, ale czy istnieje łatwiejsze, bardziej eleganckie podejście?
rzeczywiście można założyć, format daty ls -lt --time-style = +% F – vartec
Tak, dzięki za to. Wraz z rozwiązaniem z @ashawley, to wszystko się razem. – yukondude