Wie finde ich Dateien wieder? Die Lösung ist find!

Jeder kennt das wenn man sein OS das erste mal aufsetzt, nimmt man sich immer fest vor alles sauber zu halten, aber dieser Vorsatz ist spätestens nach 3 Wochen dahin. Hier sehe ich auch einen Nachteil von Linux man muss es einfach nie neu aufsetzen, man läuft also Gefahr alte Dateien, die man schon vergessen geglaubt hat wieder zu finden, sei es per Zufall oder weil man es will. 😉

Wir wollen uns, an dieser Stelle, mit dem gewollten Weg beschäftigen. 😉

Dazu benutzen wir den Power-Befehl find dieser Befehl hat wirklich Macht, er kann sehr viel! Ich kann deswegen hier auch nicht alles erklären sondern werde mich auf das wichtigste beschränken.

Die Syntax von find:
find [Pfad...] [Suchkriterium]

Als erstes wird der Pfad angegeben z.B. „/“ oder „/home“, danach werden verschieden Suchkriterien eingeben hier die wichtigsten in der Übersicht:

-name [Dateiname] Hiermit kann man den Namen der Datei angeben
-size [+,-][Größe]k Beschränkt auf bestimmte Größe einer Datei (+ größer als,- kleiner als)
-user [username] Suche auf Dateien von Benutzer beschränken
-group [gruppenname] Suche auf Dateien von Gruppen beschränken
-type [f,d,l] Suche auf Dateityp beschränken. (f = Datei, d = Verzeichnis, l = link)
-maxdepth [zahl] Bestimmt wie tief er vom Suchverzeichnis aus gehen soll
-atime [+/-][x-tage] Sucht nach Dateien nach dem letzten Zugriff (-weniger als X-Tagen,+ länger X-Tagen)
-mtime [+/-][tage] Sucht nach Dateien nach der letzten Modifikation (- weniger als X-Tagen,+ länger X-Tagen)

Um diese Tabelle ein bisschen zu verdeutlichen, einige Beispiele zu den angegeben Optionen:

Ein einfacher Suchbefehl der vom Wurzelverzeichnis „/“ alles nach Dateien mit dem Wort „test“ absucht:
find / -name test
Das gleiche für dein Homeverzeichnis:
find /home/[dein Benutzername] -name test

Alle Dateien auf deinem System die Größer als 1000MB sind:
find / -size +1000000k

Alle Dateien des Benutzer „test“:
find / -user test

Alle Verzeichnisse die sich auf deinem System befinden und den Namen „a“ tragen:
find / -type d -name a

Ich denke die Benutzung der anderen Befehle sollte nun auch klar geworden sein! Du kannst so viele Suchkriterien wie du lustig bist verwenden.

Eine Option von find muss ich dir noch zeigen!

Ich werfe einfach mal diese Befehl in den Raum:
find / -group test -exec rm -f {} \;
Diese Zeile findet alle Dateien der Gruppe „test“ und löscht dessen Dateien.

Dafür verantwortlich ist die Option „-exec“.
Die Syntax von dieser Option ist:
-exec [befehl] {} \;

In unserem Beispiel haben wir den Befehl rm -f benutzt dieser Befehl löscht alle Dateien ohne nach zu fragen, dafür das „-f“.

Die beiden geschweiften Klammern („{}“) sind dafür verantwortlich das diese Option Zeile für Zeile vorgeht, also er geht Ergebnis für Ergebnis vor.

Nun kommen wir zum Semikolon „;“.
Das Semikolon sorgt dafür das die Befehle nacheinander ausgeführt und ohne Bedingung, also die Pipe („|“) zum Beispiel gibt Daten aus dem ersten Befehl in den nächsten weiter, dass macht das Semikolon nicht. Ein Beispiel date ; echo "test", diese Zeile gibt das Datum aus und das Wort „test“ völlig unabhängig voneinander.
Das Semikolon ist im Prinzip eine Möglichkeit Befehle in eine Zeile zu schreiben, so dass man sie nicht immer auf ein neues Promt schreiben muss.

6 Gedanken zu „Wie finde ich Dateien wieder? Die Lösung ist find!

  1. Pingback: Schneller suchen mit locate - Ubuntu hilfe

  2. Gerhard

    Hallo Herr Hesse!

    Ihre Befehlserklärungen sind ganz ausgezeichnet!!
    Besonders für mich als Linux Anfänger.
    Ich Konnte bisher nichts vergleichbares finden.
    Was ich bisher noch nirgends finden konnte ist ein Befehl der es ermöglicht innerhalb der Dateien nach Worten zu suchen.

  3. admin Beitragsautor

    Hi,
    danke für das Lob 🙂

    grep ist ein Befehl der es ihnen ermöglicht in Dateien zu suchen. Ich werde bei der Gelegenheit auch mal einen Artikel drüber verfassen.
    Vorab so sind die Befehle zu benutzen:
    grep [wort] [Dateiname]

    mfg
    Stefan Hesse

  4. hilfe...

    Wenn ich bei mtime 7 angebe, oder sonst eine Zahl, die größer als 1 ist, listet er mir nichts auf. Ich wollte das hier machen:
    find /home//Test00 -name „*.sql“ -mtime 7
    Weiß nicht, ob ich das hier fragen darf…

  5. admin Beitragsautor

    Hi,
    du musst noch angeben ob es länger als 7 Tagen her war oder weniger als 7 Tage

    find /home/Test00 -name “*.sql” -mtime -7
    find /home/Test00 -name “*.sql” -mtime 7

    je nachdem was du suchst.

    PS:
    und du darfst natürlich Fragen! Dafür sind die Kommentare ja ^^

  6. mikert

    Bisher konnt ich mit „find“ keine einzige Datei finden. Wenn ich z.B. -name[*.pdf] eingebe flackern alle möglichen Verzeichnisnamen über den Bildschirm; das dauert ein bischen bis er durch ist und das wars dann. Keine Meldung, kein Bericht nichts. PDFs sind haufenweise auf meinem Rechner…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.