Meistere den find-Befehl: Dateien und Verzeichnisse gezielt suchen und bearbeiten

Melden

Der find-Befehl ist eines der mächtigsten Werkzeuge in der Linux/Unix-Kommandozeile. Er ermöglicht es dir, Dateien und Verzeichnisse basierend auf einer Vielzahl von Kriterien (Name, Größe, Datum, Berechtigungen usw.) zu suchen und direkt Aktionen mit ihnen auszuführen.

In diesem Tutorial lernst du die wichtigsten Grundlagen und fortgeschrittene Techniken.


1. Die Grundstruktur

Die Syntax von find sieht allgemein so aus:

find [Pfad] [Suchkriterien] [Aktion]
  • Pfad: Wo soll gesucht werden? (z.B. . für aktuelles Verzeichnis, / für das ganze System).
  • Suchkriterien: Wonach suchst du? (Name, Größe, etc.).
  • Aktion: Was soll mit den Ergebnissen passieren? (Standardmäßig: -print, also anzeigen).

2. Suchen nach Namen

Dies ist der häufigste Anwendungsfall.

  • Exakter Name:
    find . -name "beispiel.txt"
  • Ignorieren von Groß-/Kleinschreibung (-iname):
    find . -iname "beispiel.txt"  # findet auch Beispiel.txt oder BEISPIEL.txt
  • Suche mit Platzhaltern (Wildcards): Suche alle .jpg Dateien:
    find . -name "*.jpg"

3. Suchen nach Dateityp (-type)

Manchmal möchtest du nur nach Ordnern oder nur nach Dateien suchen.

  • Nur Dateien suchen (f für file):
    find /pfad -type f -name "test"
  • Nur Verzeichnisse suchen (d für directory):
    find /pfad -type d -name "konfig"

4. Suchen nach Dateigröße (-size)

Ideal, um "Speicherfresser" zu finden.

  • Dateien größer als 100 MB:
    find / -size +100M
  • Dateien kleiner als 10 KB:
    find . -size -10k
  • Dateien mit exakt 50 MB:
    find . -size 50M

5. Suchen nach Zeitstempel

find kann nach Änderungsdatum (mtime), Zugriffsdatum (atime) oder Statusänderung (ctime) suchen. Die Zahl gibt die Tage an.

  • In den letzten 7 Tagen geändert:
    find . -mtime -7
  • Vor mehr als 30 Tagen das letzte Mal aufgerufen:
    find . -atime +30
  • In den letzten 60 Minuten geändert:
    find . -mmin -60

6. Suchen nach Berechtigungen und Besitzern

  • Nach Berechtigungen suchen (z.B. "777" - jeder darf alles):
    find . -perm 777
  • Nach einem bestimmten User suchen:
    find /home -user max

7. Kriterien kombinieren (Logik)

Du kannst Bedingungen mit "UND" (Standard), "ODER" (-o) und "NICHT" (!) verknüpfen.

  • Suche Dateien, die auf .sh enden UND dem User root gehören:

    find . -name "*.sh" -user root
  • Suche Dateien, die entweder .pdf ODER .doc sind:

    find . \( -name "*.pdf" -o -name "*.doc" \)

    (Hinweis: Die Klammern müssen mit Backslashes maskiert werden.)

  • Suche alle Dateien, die KEINE .txt Dateien sind:

    find . -type f ! -name "*.txt"

8. Aktionen mit den Suchergebnissen ausführen

Das ist der Punkt, an dem find extrem mächtig wird.

  • Löschen (-delete): Vorsicht: Teste die Suche vorher ohne -delete!

    find . -name "*.log" -delete
  • Befehle ausführen (-exec): Du kannst jedes Programm auf die gefundenen Dateien anwenden. Die Syntax {} ist ein Platzhalter für die gefundene Datei, und \; beendet den Befehl.

    Beispiel: Ändere die Rechte aller .sh Dateien auf ausführbar:

    find . -name "*.sh" -exec chmod +x {} \;

    Beispiel: Kopiere alle gefundenen Bilder in einen Backup-Ordner:

    find . -name "*.jpg" -exec cp {} /path/to/backup/ \;

Pro-Tipp: Fehlermeldungen unterdrücken

Wenn du als normaler User im System suchst (z.B. ab /), erhältst du oft "Permission denied"-Meldungen. Du kannst diese ausblenden, indem du den Error-Stream nach /dev/null umleitest:

find / -name "geheim.txt" 2>/dev/null

Zusammenfassung der wichtigsten Schalter:

Schalter Bedeutung
-name Suche nach Dateiname
-iname Suche nach Name (ignoriert Groß/Klein)
-type f Nur Dateien
-type d Nur Verzeichnisse
-size Größe (+ mehr als, - weniger als)
-mtime Änderung in Tagen
-user Gehört bestimmtem Benutzer
-exec Führt einen Befehl aus
-delete Löscht die Ergebnisse

Viel Erfolg beim Suchen und Verwalten deiner Dateien!

0