Wer im Terminal nach Dateien sucht, kann die Standardbefehle find oder locate verwenden (auf manchen Systemen ist locate nicht vorinstalliert). Find sucht in Echtzeit nach Dateien und erlaubt den Einsatz vieler Parameter, um Dateien aufgrund ihres Namens, ihrer Grösse, ihres Besitzers, des Änderungsdatums und anderer Optionen zu finden. Demgegenüber sucht locate nicht direkt auf dem Massenspeicher, sondern in einer Datenbank, und zwar nur über den Dateinamen. Beide Suchmethoden haben ihr Vor- und Nachteile, was aber nicht Gegenstand dieses Artikels ist.
Weder find noch locate sind interaktiv: Man startet die Suche und wartet auf das Ergebnis. Anders verhält sich die "fuzzy" Suche mit dem Werkzeug fzf. Nach dem Start von fzf kann man interaktiv den Suchbegriff eingeben und erhält währenddessen passende Suchergebnisse. Vor der Anwendung muss diese installiert werden; sie ist in den gängigen Repositories enthalten, z. B. mit apt install fzf.
Nach der Installation öffnet man ein Terminal, startet fzf und schreibt einen beliebigen Suchtext.
Daraufhin zeigt fzf alle Fundstellen an, markiert darin den Suchtext und zählt die Treffer aus der Gesamtmenge. Diesen Vorgang kann man interaktiv fortführen: mehr schreiben; Zeichen löschen. Mit den Cursortasten (hoch/runter) kann man in den Suchergebnissen navigieren und mit Enter einen Pfad auswählen. Dieser wird angezeigt, es wird aber nicht in das Verzeichnis gesprungen. Wer das möchte, kann diesen Befehl (alias) verwenden:
cd $(find /home/$USER -type d | fzf)
Wie ihr seht, ist das nicht der Einsatzzweck von fzf, sondern die reine Suche. Wer eine Lösung für schnellen Verzeichniswechsel sucht, findet sie in diesem Artikel.
Um fzf flexibel einzusetzen, kann man das Werkzeug mit anderen Befehlen kombinieren, z. B. eine Suche in der History starten: history | fzf
.. oder eine Baumdarstellung wählen (erfordert die Installation des Befehls tree):
Wer alle Optionen und Einsatzmöglichkeiten von fzf sehen möchte, findet auf der Projektseite eine ausführliche Dokumentation mit Anwendungsbeispielen:
Quelle: https://github.com/junegunn/fzf
Passend dazu gibt es noch eine Anwendung bzw einen Workflow https://gnulinux.ch/mein-youtube-terminal-workflow
Hey, danke für diesen Beitrag. Das ist eine super Ergänzung zu find und locate. Ich werde fzf mal ausprobieren und gucken wie ich es in meine Arbeit auf der Konsole integriere.