przetwarzanie dzienników Apache według daty

0

Mam prostą procedurę unixową, która może przeglądać wszystkie moje dzienniki dostępu Apache pod kątem określonych ciągów. Służy mi to dobrze w sprawdzaniu złośliwego psot. Robię to po prostu łącząc wszystkie dzienniki dostępu, a następnie grepując wynikowy plik dla ciągu.

Mam kilka lat plików dziennika, po jednym na każdy tydzień. Chciałbym analizować je według roku, aby sprawy przyspieszyły w przypadku ostatnich wyszukiwań.

Teraz mógłbym określić zakres, jak w access_log.x.gz, gdzie x wynosi od 1-52 na jeden rok. ALE Apache przepisuje wszystkie nazwy plików, tak że następna z nich to access_log.0.gz, a najwcześniejsza to access_log.x.pz, gdzie x to duża liczba. Zatem zakres x nie jest specyficzny dla zakresu dat.

Jak połączyć pliki w określonym zakresie dat utworzenia? Jestem dość kompetentny w unixie, ale to jest nad moją głową. Oznacza to na przykład połączenie wszystkich plików, dla których datą utworzenia jest 2016 r.

user618
źródło
Nie możesz zrobić czegoś takiego jak znalezienie. -maxdepth 1 -type f -mtime +365 -a (! -mtime +730) -print0 | xargs -0 grep -i 'foo', aby na przykład przeszukać wszystkie pliki starsze niż 1 rok, ale nie starsze niż 2 lata?
Roadowl
Mogę to wykorzystać, ale dostaję błąd składniowy na „find. -Maxdepth 1 -type f -mtime +365 -a (--time +730) -print0 | xargs -0 grep -i„ foo ”
user618
Nawiasy powinny być również ucieczkowe, umieszczając bacsklash przed każdym z nich (zostały one usunięte z mojego komentarza; ten przed okaleczeniem pozostawiono na miejscu); w tym przypadku można jednak całkowicie pominąć nawiasy, ale znacznik odwrotny ukośnika jest ważny (odwraca operację -a mtime).
Roadowl
graj najpierw, robiąc coś takiego jak znajdź. -maxdepth 1 -type f -mtime +356 -a -mtime +730-l
Roadowl
O tak. To wydaje się działać. Dostaję pliki utworzone w styczniu 2016 r., Które są najstarszymi plikami w moim katalogu. Dziękuję Ci! Myślę, że to doprowadzi mnie do miejsca, w którym chcę być.
user618