Fd vereinfacht die Suche nach Dateien und Verzeichnissen im Terminal. Dabei arbeitet es schneller und intuitiver als das Urgestein GNU Find.
Ein bekanntes Sprichwort sagt: “Ordnung ist das halbe Leben”. Das impliziert auch, dass die andere Hälfte Unordnung ist. Und mit “man muss nicht alles wissen; man muss nur wissen, wo man es findet” folgt gleich noch ein Sinnspruch, der uns zum Thema dieses Artikels führt: Es geht um das Suchen und Finden auf mehr oder minder ordentlich verwalteten Festplatten. In der Eile wird so manches nicht dort abgelegt, wo es eigentlich hingehört. Und selbst bei guter Ordnung weiß man nicht immer, ob man eine gesuchte Rechnung im Ordner Rechnungen/ oder unter PDF/ verstaut hat. Es gibt eine große Zahl an Helferlein, um das Gesuchte aufzuspüren, wie etwa das für den grafischen Desktop konzipierte Fsearch [1], das wir in LU 07/2023 vorgestellt haben.
Find vs. Fd
Auf der Kommandozeile ist GNU Find [2] ein häufig genutztes Tool, allerdings mit einer nicht gerade trivialen Syntax. Deshalb sehen wir uns heute die benutzerfreundlichere Alternative Fd [3] an, die die Befehlsstruktur vereinfachen möchte und zudem schneller arbeitet, wenn man den Programmierern des Tools glauben darf. Das in Rust geschriebene Programm zielt zwar nicht darauf ab, sämtliche Funktionen des leistungsstarken Vorbilds zu unterstützen, will aber sinnvolle Standardeinstellungen für die meisten Anwendungsfälle anbieten.
Fd, dessen Paketname auf vielen Distributionen fd-find lautet, steht in den Repositories der meisten gängigen Linux-Spielarten zur Installation mit dem jeweiligen Paketmanager (siehe Listing 1) bereit [4]. Darüber hinaus gibt es die Software noch für BSD, MacOS und Windows.
Listing 1
Installation
### Arch Linux $ sudo pacman -S fd ### Debian $ sudo apt install fd-find ### Fedora $ sudo dnf install fd-find ### OpenSuse $ sudo zypper in fd
Installation
Nicht alle Distributionen führen bereits die aktuelle Fd-Version 8.7 in den Archiven. Die installieren Sie bei Bedarf über den Rust-Paketmanager Cargo, den Sie gegebenenfalls zunächst über das Paketmanagement der verwendeten Distribution einrichten. Dann laden Sie das aktuelle Release von der Github-Seite des Projekts herunter und installieren es via Cargo (Listing 2, erste Zeile).
Dabei wandert unter Debian/Ubuntu und deren Ablegern sowie unter Fedora das Binary fdfind auf die Platte. Diese Distributionen führen nämlich bereits ein älteres, wohl auf kaum einem Rechner installiertes Programm fd in den Paketquellen. Um das hier beschriebene Suchwerkzeug wie von dessen Programmierer vorgesehen und dokumentiert als fd aufrufen zu können, müssen Sie noch einen entsprechenden Symlink anlegen (Listing 2, zweite Zeile).
Sollte sich das Verzeichnis ~/.local/bin/ nicht in Ihrem Pfad befinden und Sie eine entsprechende Fehlermeldung erhalten, gilt es, hier nachzuarbeiten. Überprüfen Sie zunächst die Ausgabe des Befehls aus der dritten Zeile von Listing 2. Fehlt im Pfad der Eintrag /home/User/.local/bin/, dann tragen Sie ihn mit dem Kommando aus Zeile 4 am Ende der Datei ~/.bashrc ein. Anschließend aktivieren Sie den so ergänzten Pfad mittels des Kommandos aus der letzten Zeile des Listings.
Listing 2
Systempfad einrichten
$ cargo install --force fd-find $ ln -s $(which fdfind) ~/.local/bin/fd $ echo $PATH $ echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc $ source ~/.bashrc
Danach steht das Werkzeug über den kurzen, leichter zu tippenden Befehl fd zum Einsatz bereit. Um sich mit seinen Optionen vertraut zu machen, rufen Sie zunächst einmal mit fd -h die Kurzform der Online-Hilfe ab. Wesentlich ausführlichere Erklärungen zu den Optionen erhalten Sie mit fd --help (Abbildung 1).
Beim Aufruf ohne Argumente listet Fd analog zu Find den gesamten Inhalt des aktuellen Arbeitsverzeichnisses auf und dient damit als einfacher Ersatz für ls -R. Analog zu ls -l erhalten Sie mit beim Aufruf fd -l eine Ausgabe mit zusätzlichen Metadaten.
Einfache Syntax
Angenommen, Sie suchen alle Dateien des Formats JPEG im aktuellen Verzeichnis, dann lautet der Befehl für find find . -type f -name "*.jpg", bei Fd genügt dagegen fd -e jpg. Der Parameter -e sorgt für eine Filterung nach Dateierweiterung (Abbildung 2). Befinden sich die gesuchten Daten nicht im gegenwärtigen Verzeichnis, so ergänzen Sie den Aufruf um eine Pfadangabe wie in fd . -e jpg ~/Bilder.
Der Befehl fd -e md linux Dokumente findet Markdown-Dokumente (Erweiterung md) mit dem Begriff linux im Namen im Verzeichnis ~/Dokumente (Abbildung 3). Nicht zu durchsuchende Unterverzeichnisse schließen Sie mit -E aus. Mit fd -I -e md oder fd -not -e md kehren Sie die Suche um und finden nur Dateien, die nicht die entsprechende Dateierweiterung haben.

Abbildung 3: Die Suche nach Zeichenfolgen in Markdown-Dateien im angegebenen Verzeichnis gelingt mit einem einfachen Befehl.
Das Suchmuster von Fd ignoriert standardmäßig Groß- und Kleinschreibung. Um das zu ändern, nutzen Sie den Parameter -s. Über --max-depth Anzahl beziehungsweise -d Anzahl geben Sie die gewünschte Verzeichnistiefe an. Umgekehrt suchen --min-depth 2 oder -D 2 erst ab der dritten Ebene und lassen die ersten beiden Verzeichnisebenen aus. Anders als Find berücksichtigt Fd versteckte Ordner und Dateien nur dann, wenn Sie das mittels des Schalters -H explizit anfordern.
Befehle ausführen
Wie Find mit -exec bietet auch Fd mit -x die Möglichkeit, Befehle auf die Treffer anzuwenden. Möchten Sie etwa für alle Dateien mit der Endung md im aktuellen Verzeichnis die Zugriffsrechte so ändern, dass Sie sie als Eigentümer lesen und schreiben können, alle anderen sie aber nur lesen dürfen, nutzen Sie dazu fd -e md -x chmod 644 {}. Ein weiteres Beispiel ist das Verschieben von Daten. So schiebt fd -e md "mv {} /Ziel" alle Fundstellen in das angegebene Verzeichnis. Um die Anzahl der Worte in den Dateien eines Verzeichnisses zu ermitteln, nutzen Sie fd -t f -x wc -l (Abbildung 4).

Abbildung 4: Wie viele Worte enthalten die Dateien im aktiven Verzeichnis? Das lässt sich mit Fd dank der Parameter -t und -x leicht feststellen.
Mit dem Parameter -t und einem Dateityp-Indikator beschränken Sie wie bei Find die Suche auf einen Dateityp. Zu den unterstützten Dateiindikatoren zählen f für Dateien, d für Verzeichnisse,l für Symlinks, x für ausführbare Dateien und e für leere Dateien oder Verzeichnisse. Mit -p zeigt Fd den gesamten Pfad der Fundstelle an. Mit -S grenzen Sie die Größe der gesuchten Dateien ein. So findet fd -e md -S +10k Markdown-Dokumente mit mehr als 10 KByte Größe.
Mit den Optionen --changed-before und --changed-within filtern Sie das Datum. So findet fd -e md --changed-before "2023-08-01" alle Dateien mit der Endung md, die vor dem 1. August 2023 erstellt wurden. Markdown-Dokumente, die während der letzten zehn Tage geändert wurden, spürt das Kommando fd -e md --changed-within 10d auf.
Reguläre Ausdrücke
Suchen Sie Dateien eines bestimmten Nutzers, verwenden Sie dazu fd -o User. Auch reguläre Ausdrücke dürfen Sie verwenden. Dazu müssen Sie das Muster aber in Anführungszeichen oder Hochkommata setzen. So sucht die Anweisung fd -e md '^[a-f]' nach allen Textdateien, deren Namen mit einem Kleinbuchstaben von “a” bis “f” beginnt (Abbildung 5).

Abbildung 5: Mithilfe von regulären Ausdrücken finden Sie alle Markdown-Dateien, deren Name mit den Buchstaben “a” bis “m” beginnt.
Dateien, deren Name auf ux endet, finden Sie mit fd '.*ux$' (Abbildung 6). Möchten Sie symbolischen Links folgen, nutzen Sie den Schalter -L. So fördert fd -L -t f beispielsweise alle Dateien zutage, die durch symbolische Links verknüpft sind.
Fazit
Die Entwickler von Fd übertreiben keineswegs: Das Tool arbeitet in der Tat merklich schneller als Find. Das wird umso spürbarer, je komplexer das Suchmuster ausfällt. Benchmarks [5] auf Github besagen, dass Fd im regulären Betrieb bis zu zehnmal schneller operiert als Find. Das bringt Vorteile für Anwender, die häufig ausgedehnte Suchen starten. Für den gelegentlichen Gebrauch bietet Fd ebenfalls Vorteile, denn die Syntax gestaltet sich einfacher und kürzer als die von Find. Darüber hinaus lässt sich die farbig gestaltete Ausgabe intuitiver erfassen.
Fd eignet sich damit ideal als Find-Ersatz für alltägliche Suchaktionen. Auch wenn die Entwickler angeben, nur 80 Prozent der Optionen von Find abzudecken – das genügt im Alltag allemal. Da wir in diesem Artikel die umfangreichen Optionen von Fd nur anreißen konnten, lohnt es sich, die Materie mit ausführlichen Erklärungen via fd --help oder anhand der Manpage zu vertiefen. (tle/jlu)
Infos
-
Fsearch: Ferdinand Thommes, “Schnell gefunden”, LU 03/2023, S. 32, https://www.linux-community.de/48548
-
Fd-Versionen: https://repology.org/project/fd-find/versions
-
Fd vs. Find: https://github.com/sharkdp/fd#benchmark








