Wie greppt man eine Gruppe von Dateien innerhalb eines Zeitbereichs?

Wie greppt man eine Gruppe von Dateien innerhalb eines Zeitbereichs?

Ich versuche, ein Skript zu schreiben, das auf einer Pufferbox verwendet wird und den gesamten Netzwerkverkehr erfasst. Da es sich um ein ziemlich großes Netzwerk handelt, teilen wir die Erfassungen in 100-MB-Segmente auf. In Zeiten mit hohem Netzwerkverkehr, oft über einen Zeitraum von einer Minute, haben wir mehrere PCAPs, die diesen Zeitraum abdecken.

Ich möchte also ein Bash-Skript haben, mit dem der Analyst, der nach etwas sucht, ein Datum und eine Uhrzeit angeben kann und wie viele Minuten davor und danach er nach Dateien suchen möchte. Offensichtlich kann ich so etwas machen -

ls -al | grep "Dec  1" | grep 02:00
ls -al | grep "Dec  1" | grep 02:01

und so weiter, hole mir jedes Ergebnis und durchsuche jede Datei einzeln nach dem spezifischen Schlüsselwort, nach dem ich suche. Ich möchte aber eine breitere Suche nach allen Dateien durchführen können, die innerhalb eines bestimmten Zeitraums erstellt wurden, und dann jede einzelne davon nach dem Schlüsselwort durchsuchen.

Ich bin nicht ganz sicher, wie das geht. Ich wäre für jede Hilfe dankbar.

Antwort1

Einige der tollen Dinge, die find(unter GNU/Linux) für Sie tun können:

Einheiten:

  • ngenauNuntis
  • -nweniger alsNEinheiten
  • +nmehr alsNEinheiten -

Was ist passiert:

  • -atime: letztes Malaufgerufen
  • -ctime: Änderungen amDatei selbst(Berechtigungen, Eigentümer, …), nicht der Inhalt
  • -mtime:Inhalt der Dateigeändert
  • -amin n:NMinuten Alter
  • -atime n:Nvor Tagen (24 Stunden)
  • gleiches gilt für ctime/minund mtime/min)

Daher:

  • find -atime -30→ letzter Zugriff vor weniger als 30 Tagen
  • find -ctime +5→ vor mehr als 5 Tagen, Änderungen an der Datei selbst
  • find -mtime +2 -31→ Der Inhalt der Datei hat sich vor mehr als zwei Tagen, aber weniger als 31 Tagen geändert

auch - -daystart: nach heute, 0.00h


Grepping

find Sachen -exec grep {} \;→; der letzte Teil ( {} \;) ist wichtig - beachten Sie den einzelnen Leerraum zwischen {}und\;

Die -execOptionen ermöglichen die Einbindung weiterer Befehle infind


Auch:Warum man die Ausgabe vonls

Antwort2

find -iname "" -mtime -7 -exec zgrep "" {} \;

Zum Beispiel

find /opt/WebSphere/AppServer/profiles/application/logs/ -iname "SystemOut*" -mtime -7 -exec zgrep "FileNotFoundException" {} \;

Es sucht im Verzeichnis /opt/WebSphere/AppServer/profiles/application/logs/ nach Dateien, die in den letzten 7 Tagen mit „SystemOut“ beginnen, und nach der Zeichenfolge „FileNotFoundException“.

verwandte Informationen