So finden Sie in Linux schnell Dateien

Wollen Sie mit Linux Dateien suchen, klappt das auf der Kommandozeile recht einfach. Sie haben die Wahl, ob Sie ganz einfach mit locate Dateien aufspüren oder besonders flexibel mit der Hilfe von find. Wir haben in diesem Beitrag für Sie Suchtipps zusammen getragen.


So finden Sie in Linux schnell Dateien über ihren Namen

  • Geben Sie ein locate, gefolgt vom gesuchten Namensteil, wie etwa locate mysql
  • Das Kommando locate findet alle Dateien, die die genannte Zeichenfolge im Pfad oder dem Dateinamen selbst haben.
  • Damit es dabei nicht auf die korrekte Groß-/Kleinschreibung ankommt, verwenden Sie locate -i wie "ignore case" starten. Das Kommando locate -i mysql würde also auch eine Datei MySQL.info finden.
  • Manchmal stört es, dass auch der Pfadname nach dem Stichwort durchsucht wird. Dann verwenden Sie den Parameter -b wie "basename" und locate bringt nur Treffer, wo der Suchbegriff im Dateinamen selbst vorkommt.

Die Abfrage per locate geht ziemlich schnell, weil die Suche nicht live im Dateisystem, sondern in einer Datenbank erfolgt, die vom System automatisch in der Nacht upgedatet werden sollte. Passiert das nicht von selbst, dann können Sie diese Datenbank mit dem Kommando updatedb anlegen lassen.

Wenn locate einen Fehler bringt

In diesem Fall ist sehr wahrscheinlich einfach nur das Programmpaket nicht installiert, das locate beinhaltet.

Auf einem Debian-System installieren Sie es mit folgenden Kommandos nach und füllen gleich die Datenbank:
sudo apt-get install locate
sudo updatedb

Nach großen Dateien suchen

Folgender Befehl liefert Ihnen alle Dateien im Ordner /var/www, die mehr als 100 MByte an groß sind:

ls -lahS $(find /var/www -type f -size +100M)

Der Befehlsteil innerhalb der Klammer ermittelt dabei die Dateien. Er alleine würde aber nur den Pfad- und Dateinamen ausgeben.

Der Befehl ls -lahS sorgt für das Auflisten der Dateien mit allen nützlichen Zusatzinformationen. Die Dateien werden mit l im langen Format ausgegeben. Der Parameter a zeigt alle Dateien, auch die versteckten. Dank h erscheinen alle Größenangaben in gut lesbarem Format.

Mit $() wird das Ergebnis des Befehls innerhalb der Klammer als Parameter an ls übergeben. Sprich, es erscheinen nur Dateien, die größer sind als 100 MByte.

Hinweis: Wenn Sie den Befehl nicht als root ausführen, werden Sie einige Male Permission denied zu lesen bekommen.

So unterdrücken Sie die Fehler des Kommandos find

Wer in Linux als normaler User mit find sucht, bekommt häufig Meldungen dass der Zugriff auf bestimmte Objekte nicht erlaubt ist.

Der Grund: Im Linux-Filesystem stecken nicht nur normale Dateien und Ordner, sondern auch Geräte und spezielle Steuerdateien. Versucht das Programm find diese zu durchzuarbeiten, verweigert das Betriebssystem den Zugriff.

Linux Fehler bei find
Linux Fehler bei der Suche nach Dateien per find

Einfaches Abwürgen von Meldungen

Um diese Meldungen zu unterdrücken, suchen Sie mit

find / -name *.bla 2> /dev/null

Damit werden die Fehlermeldungen ins Nirvana geschrieben und Sie haben mehr Überblick mit find.

Filter setzen

Eine elegantere Möglichkeit ist, wenn Sie find anweisen, nur reguläre Dateien zu behandeln. Dann sieht obiges Beispiel so aus:

find / -type f -name *.bla

Dann kommt nur noch in den Fällen ein "Permission denied", wo der aktuelle Benutzer keine Leserechte hat.

Dateien nach Datum finden

Interessant ist es manchmal, die Dateien zu ermitteln, die kürzlich geändert wurden. Auch hier hilft find weiter.

Schreiben Sie diese Befehlszeile:

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

Der Befehl sucht danach im aktuellen Verzeichnis (das ist der Punkt) und dessen Unterverzeichnissen nach allen Dateien mit der Endung *.doc, die weniger als einen Tag alt sind. Wollen Sie über alle Dateien suchen, lassen Sie einfach den Teil -name '*.doc' weg.

Wollen Sie wie oben nicht einfach nur die Pfad- und Dateinamen als Antwort, sondern eine ausführliche Aufstellung, packen Sie den kompletten find-Befehl in ein Konstrukt wie oben und schreiben etwa für die Suche über alle Dateitypen:

ls -lahS $(find . -type f -mtime -1)

Zuständig für diese Altersfragen ist der Parameter -mtime. Die Zahl dahinter steht für Tage, also -mtime -1 für den zurück liegenden Tag, sprich die letzten 24 Stunden.

Abhängig vom Vorzeichen steuern Sie die Tage. Schreiben Sie zum Beispiel

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

und heraus kommen alle Dateien und Verzeichnisse, die älter als einen Tag sind.

Steht die Zahl ohne Vorzeichen da, sucht find Dateien, welche die angegebenen Tage plus einen alt sind. Mit -mtime 5 sucht find also alle Files, die zwischen fünf und sechs Tagen auf dem Buckel haben.


Letzte Aktualisierung am 19.12.2016 / Affiliate Links / Bilder von der Amazon Product Advertising API



Schreibe einen Kommentar