it-swarm.com.de

Lassen Sie alle Dateien, die in den letzten 30 Tagen geändert wurden, in einem Verzeichnis speichern

CentOS. Sie müssen nach Dateien suchen, die in den letzten 30 Tagen geändert wurden, um festzustellen, ob sie mit Malware infiziert wurden.

Ich habe es versucht:

[email protected] [/home/someuser/public_html/]# find . -mtime +30
 -exec ls -l {} > last30days.txt \;

Aber statt der letzten 30 Tage scheint es alles gefunden zu haben. 22.000 Dateien.

32
Buttle Butkus

Ein paar Probleme

  • Sie beschränken sich nicht auf Dateien. Wenn ein passendes Verzeichnis gefunden wird, werden alle darin enthaltenen Dateien aufgelistet.
  • Sie können > In -exec Nicht ohne etwas wie bash -c '... > ...' Verwenden. Obwohl der > Die Datei überschreibt, möchten Sie trotzdem den gesamten find umleiten und nicht jeden -exec.
  • +30 Ist older als 30 Tage, -30 Würde in den letzten 30 Tagen geändert.
  • -exec Wird wirklich nicht benötigt, Sie können alles mit verschiedenen -printf - Optionen auflisten.

So etwas wie unten sollte funktionieren

find . -type f -mtime -30 -exec ls -l {} \; > last30days.txt

Beispiel mit -printf

find . -type f -mtime -30 -printf "%M %u %g %TR %TD %p\n" > last30days.txt

Dies listet Dateien im Format "Berechtigungsinhaber Gruppe Zeit Datum Dateiname" auf. -printf Ist im Allgemeinen -exec Vorzuziehen, wenn Sie nichts Kompliziertes tun müssen. Dies liegt daran, dass es schneller ausgeführt wird, da keine Subshells für jedes -exec Ausgeführt werden müssen. Abhängig von der Version von find können Sie möglicherweise auch -ls Verwenden, das ein ähnliches Format wie oben hat.

92
BroSlow