find-Befehl bauen, ohne Flags auswendig zu lernen
Der Linux-Befehl find ist das nützlichste Werkzeug in der Shell und gleichzeitig das schmerzhafteste zu merken. "War es -mtime -7 oder +7? Bedeutet -size +100M größer oder kleiner? Wie lösche ich Treffer sicher?" Jedes Mal googelst du denselben Stack-Overflow-Post von 2012.
Dieser Builder ist das Gegenteil. Du klickst, was du brauchst (Pfad, Name-Pattern, Datei-Typ, Größe, Änderungszeit, Aktion) und der Befehl erscheint rechts, fertig zum Kopieren. Nichts wird ausgeführt, kein Risiko: das ist ein Builder, kein Runner. Der Befehl läuft erst, wenn du ihn in dein eigenes Terminal pastest, wo du ihn vorher lesen kannst.
Was du bauen kannst:
- Ordner durchsuchen per Glob (`*.log`, `*.tmp`), Name, Pfad oder Regex
- nach Typ filtern (Datei, Verzeichnis, Symlink, Block-Device)
- nach Größe filtern (`-size +100M` = größer als 100 Megabyte)
- nach Zeit filtern (`-mtime -7` = in den letzten 7 Tagen geändert)
- nach Eigentümer, Gruppe, Permissions, leer / ausführbar / lesbar / schreibbar filtern
- eine Aktion wählen: print, null-terminiert für `xargs -0`, delete, einen Befehl pro Treffer ausführen oder Treffer batchen
Die Vorschau zeigt zusätzlich eine simulierte Beispiel-Ausgabe, damit du siehst, was der Befehl matchen würde, bevor du ihn auf echten Daten laufen lässt.
So nutzt du das Tool
- Start-Pfad eingeben in "Wo suchen". Default ist . (aktueller Ordner). Nimm /var/log für System-Logs, ~/Downloads für dein Download-Verzeichnis oder / für das ganze System (langsam, meist Root-Rechte nötig).
- Die Sektion einschalten, die du brauchst (jedes Panel hat seinen eigenen Switch). Du musst nicht alle Sektionen ausfüllen, nur die, die für die Suche relevant sind.
- Name-Pattern wählen: tipp etwas wie `*.log` und wähl den Modus. \-name ist Standard (case-sensitive Glob). \-iname ignoriert Groß-/Kleinschreibung. \-path matcht den vollen Pfad inkl. Ordnern. \-regex matcht einen regulären Ausdruck.
- Datei-Typ wählen mit der Chip-Reihe: Datei, Verzeichnis, Symlink. Du kannst mehrere Typen gleichzeitig auswählen (find behandelt sie als ODER-Verknüpfung).
- Größen-Filter setzen. Vergleich: = exakt, > größer als, < kleiner als. Einheit wählen: c (Bytes), k (Kilobyte), M (Megabyte), G (Gigabyte). Beispiel: `-size +100M` findet Dateien größer als 100 Megabyte.
- Zeit-Filter setzen. Wähl modified (\-mtime), accessed (\-atime) oder changed (\-ctime), dann Einheit (Minuten / Stunden / Tage) und Zahl. \-mtime -7 heißt "in den letzten 7 Tagen geändert".
- Aktion wählen: \-print (Default, gibt Pfade aus), \-print0 (null-terminiert, für Pipe zu `xargs -0`), \-delete (löscht Treffer, gefährlich, große rote Warnung), oder \-exec ... \; um einen Befehl pro Treffer auszuführen. Nimm {} als Platzhalter für den jeweiligen Pfad.
- Befehl kopieren aus dem Preview-Panel rechts. Terminal öffnen, pasten, erst lesen, was er macht, dann Enter. Der Builder führt selbst nie etwas aus.
Wann das nützlich ist
Sechs Situationen, in denen du nach find greifst und die Flags nie wieder auswendig lernen willst:
- Alte Logs aufräumen. Deine Disk ist voll und `/var/log` ist verdächtig. Du willst alles, was älter als 90 Tage ist und auf .log endet: `find /var/log -type f -name "*.log" -mtime +90 -delete`. Der Builder erzeugt das in 4 Klicks, du liest es vorher zur Sicherheit, ob du nicht aus Versehen -mtime -90 geschrieben hast.
- Riesige Dateien finden, die die Disk fressen. `df` sagt 90% voll, aber du weißt nicht, welcher Ordner schuld ist. Du fragst nach allen Dateien größer als 1 GB irgendwo im System: `find / -type f -size +1G`. Nach Größe sortieren, die größten Schweine erschlagen.
- Was hat sich heute geändert? Du hast einen Installer oder ein Build-Skript laufen lassen und willst wissen, welche Dateien angefasst wurden. `find / -type f -mtime -1` listet alles, was in den letzten 24 Stunden geändert wurde. Nützlich fürs Debugging, Security-Audits und das Aufspüren von "woher kam diese Config?".
- Massen-Umbenennung oder -Verarbeitung. Du willst jedes .heic-Bild in .jpg konvertieren: `find ~/Photos -name "*.heic" -print0 | xargs -0 -I {} convert {} {}.jpg`. Die Kombi \-print0 plus `xargs -0` ist der sichere Weg: sie verkraftet Dateinamen mit Leerzeichen, Anführungszeichen und Unicode ohne Probleme.
- Leere Verzeichnisse aufräumen. Nach einem großen Umzug sind manche Ordner leer. `find . -type d -empty -delete` räumt sie in einem Rutsch ab. Der Builder zeigt dir den exakten Befehl, bevor du ihn ausführst.
- Dateien mit falschen Permissions finden. Dein Webserver wirft 403er, weil ein paar Dateien nicht world-readable sind. `find /var/www -type f ! -perm -044` listet Dateien, bei denen "others" nicht lesen darf. Korrigieren mit nachfolgendem `chmod`.