Zum Inhalt springen

Schlagwort: logfiles

Bestimmter Inhalt von Dateien in einem Verzeichnis suchen

Sucht man eine bestimmte Zeichenkette, um z.B. eine Konfiguration unter Linux anzupassen, weiß aber nicht in welcher Datei diese vorkommt, so kann man sich mit find, xargs und grep aushelfen.

Im folgenden Beispiel suchen wir alle Dateien im Verzeichnis /etc , in denen der String localhost vorkommt:

find /etc -type f | xargs grep localhost

Am Ergebnis erkennen wir, dass in der hosts Datei zwei mal localhost enthalten ist:

/etc/hosts:127.0.0.1 localhost
/etc/hosts:::1 ip6-localhost ip6-loopback

Natürlich lässt sich die Suche auch einschränken. Im folgenden Beispiel werden keine *.log Dateien durchsucht:

find /foo/bar -type f -not -name "*.log" | xargs grep localhost

Bestimmte Dateien finden und löschen

Wenn man zum Beispiel in aktuellen Verzeichnis alle Log Dateien von 2015 löschen will, kann man dies mit dem Befehl find machen.

Zuerst sucht man die gewünschten Dateien, die man löschen möchte:

find ./ -name "*2015*.log"

Hat man die richtigen Dateien gefunden, dann kann man dem Befehl „-exec rm {} \;“ anhängen, damit diese gelöscht werden.

find ./ -name "*2015*.log" -exec rm {} \;

Alle Dateien einzeln packen

Möchte man unter Linux alle Dateien im aktuellen Verzeichnis einzeln packen, so kann man dies mit folgendem Befehl machen:

for f in *; do tar cfvz $f.tgz $f; done

Falls man nur Log-Dateien packen will, kann man das so tun:

for f in *.log; do tar cfvz $f.tgz $f; done

Will man die Dateien nach dem Packen löschen, erweitert man einfache den Befehl:

for f in *.log; do tar cfvz $f.tgz $f; rm $f; done

Dateien finden, die größer als …

Dateien finden, die eine bestimmte Größe überschritten haben.

Jeder kennt es: Eine Partiton / Festplatte läuft voll. Mit folgendem Befehl kann man schnell Dateien finden, die größer als 10MB sind, um zu schauen was man löschen könnte:

ls -lahS $(find / -type f -size +10000k)