silvesterlangen.de

Seite
Menü

Dateien finden/sortieren

Manchmal braucht man einfach nur eine Datei, aber findet sie im Wald der Daten einfach nicht wieder. Dazu gibt es Tools, die dabei helfen können. Richtig Problematisch wird es, wenn eine Datei gesucht wird, die einen ganz bestimmten Inhalt hat. Beispielsweise wird eine Textdatei gesucht mit einem wichtigen Inhalt und man erinnert sich nur an einige Wörter, die darin vorkommen.

Nach Dateinamen suchen

Wir suchen eine Datei, die bspw. maildata.conf heißt, aber wir wissen nicht mehr wo sie liegt und finden sie auch nicht in /etc/ wieder. Folgender String hilft:

find / | grep maildata.conf

Nach Duplikaten suchen, auch, wenn der Dateiname anders ist

find /home/share/ -type f -exec md5sum '{}' ';' | sort | uniq --all-repeated=separate -w 15 > dupes.txt

Suche nach Strings in Dateien

Wir suchen Dateien auf dem System in denen sich ein bestimmter Textinhalt befindet. Beispielsweise suchen wir nach dem String "Muttis Kochbuch", aber wissen nur noch, dass es sich in unserem Homeverzeichnis befindet.

grep -lr "Muttis Kochbuch" ~/

 

Suche Datei(en) mit Inhalt und lösche sie

Wir möchten, dass alle Dateien gelöscht werden, die den Suchstring "Windows ist super" beinhalten. Wir kennen die Ablageorte der Dateien nicht, müssen sie aber aufspüren und löschen.

grep -lr "Muttis Kochbuch" /  | xargs -0 rm -f --

 

Suchen Dateien größer als 10 Mbyte

find / -type f -size +10000k

Und jetzt der Größe nach sortiert anzeigen

find / -type f -size +10000k | sort -hr

Suche Dateien, die größer also 0 Kbyte sind

find . -type f -size +0k | grep Sicherungsfehler.log

 

Dateien nach Datum/Alter finden

Wir suchen eine/mehrere .doc-Datei(en) auf dem Server, die weniger als einen Tag alt sind.

find . -name '*.doc' -type f -mtime -1

Wir suchen eine/mehrere .doc-Datei(en) auf dem Server, die älter als einen Tag sind.

find . -name '*.doc' -type f -mtime +1

Wir suchen Dateien, die ab einem bestimmten Datum erstellt wurden.

find . -type f -newermt "Jan 1 23:00"

Jetzt suchen wir Dateien, die zwischen zwei Daten erstellt bzw. verändert worden sind.

find . -type f -newermt "Jan 1 23:00" ! -newermt "Jan 2 20:00"

Nun suchen wir Dateien, die älter als 30 Tage sind und lassen sie uns anzeigen (-ls). Die zweite Zeile (-delete) löscht diese Dateien dann. Aber achtung! Es werden auch Dateien in Unterverzeichnissen berücksichtigt. Um das zu begrenzen helfen -maxdepth und -mindepth weiter.

find /DataDir/ -type f -mtime +30 -ls

find /backup/ -type f -mtime +30 -delete

Unterschied mtime, ctime und atime

 

 

Dateien suchen und löschen

find . -name Thumbs.db -exec rm -i {} \;

Dateien suchen und irgendwas damit machen

"find" sucht ab dem Punkt (.) und geht dabei alle Verzeichnisse und Unterverzeichnisse durch, und sucht nach einer Datei namens "Thumbs.db". Der Schalter "-exec" gefolgt von einem Befehl sorgt dafür, dass der Befehl ausgeführt wird. Die Schweifklammern dahinter sorgen dafür, dass der Befehl je Zeile ausgeführt wird.

find . -name Thumbs.db -exec <Der Befehl> {} \;

Möchten wir beispielsweise Dateien finden, die for_all.txt heißen und diese mit den Rechten 644 ausstatten, so könnte man das auch wie folgt machen:

find . -name for_all.txt  -exec chmod 644 {} \;

Hinter -exec kann also fast jeder Befehl stehen, der dann je Zeile ausgeführt wird. 

Das lässt sich übrigens super mit regulären Ausdrücken kombinieren. ;-)

 

« vorige Seite Seitenanfang nächste Seite »
Seite
Menü
Earned Certificates:
LPIC-1 LPIC-1 LPIC-1
Powered by CMSimple | Template by CMSimple | Login