fd ist ein Programm zum Auffinden von Einträgen im Dateisystem und eine einfachere, schnellere und benutzerfreundlichere Alternative zum bestehenden find-Befehl
- Es unterstützt nicht alle Funktionen von
find, bietet aber sinnvolle Standardwerte für gängige Anwendungsfälle
- Windows, macOS, Linux
- Intuitive Syntax: einfach im Format
fd PATTERN verwendbar (bequemer als find -iname '*PATTERN*')
- Unterstützung für reguläre Ausdrücke und Glob-Muster
- Parallele Verzeichnisdurchsuchung für hohe Geschwindigkeit
- Farbige Hervorhebung nach Dateityp (ähnlich wie bei
ls)
- Unterstützung für parallele Befehlsausführung
- Intelligente Groß-/Kleinschreibung: standardmäßig ohne Beachtung der Groß-/Kleinschreibung, bei enthaltenen Großbuchstaben mit Beachtung
- Versteckte Dateien und Verzeichnisse werden standardmäßig ignoriert
.gitignore-Muster werden standardmäßig berücksichtigt
- Der Befehlsname ist 50 % kürzer als
find
Verwendung
- Nach Einträgen mit einem Muster im aktuellen Verzeichnis suchen:
fd netfl
- Suche mit regulären Ausdrücken möglich:
fd '^x.*rc$'
- In einem bestimmten Verzeichnis suchen:
fd passwd /etc
- Alle Dateien unterhalb des aktuellen Verzeichnisses rekursiv auflisten:
fd
- Nach einem bestimmten Dateityp suchen (mit Option
-e): fd -e md
- Nach einem exakten Dateinamen suchen (mit Option
-g): fd -g libc.so /usr
- Einschließlich versteckter und ignorierter Dateien suchen (mit Optionen
-H, -I): fd -H pre-commit fd -I num_cpu
- Im gesamten Pfad statt nur im Dateinamen suchen (mit Option
-p): fd -p '.*/lesson-\d+/[a-z]+.(jpg|png)'
- Für jedes Suchergebnis einen Befehl ausführen (
-x): fd -e zip -x unzip
- Alle Suchergebnisse an einen einzelnen Befehl übergeben (
-X): fd -g 'test_*.py' -X vim
- Platzhalter-Syntax
- {}: vollständiger Pfad des Suchergebnisses
- {.}: Pfad ohne Dateierweiterung
- {/}: Dateiname
- {//}: übergeordnetes Verzeichnis
- {/.}: Dateiname ohne Erweiterung
- Bestimmte Verzeichnisse oder Dateien ausschließen (mit Option
-E): fd -H -E .git
- Durch Anlegen einer
.fdignore-Datei können globale Ausschlussmuster festgelegt werden
- Gefundene Dateien können gelöscht werden (
-X rm): fd -H '^\.DS_Store$' -tf -X rm
Wichtige Befehlsoptionen
- -H: versteckte Dateien und Verzeichnisse in die Suche einbeziehen
- -I:
.gitignore und .fdignore ignorieren
- -p: im gesamten Pfad suchen
- -e: nach einer bestimmten Erweiterung suchen
- -x: Befehl für Suchergebnisse ausführen
- -X: alle Suchergebnisse an einen einzelnen Befehl übergeben
- -E: bestimmte Datei oder bestimmtes Verzeichnis ausschließen
Leistungsvergleich (Benchmark)
- Ergebnis eines Suchtests mit 750.000 Verzeichnissen und 4 Millionen Dateien
find-Leistung: ca. 19,9 Sekunden
fd-Leistung: ca. 854,8 ms
- 23-mal schneller als
find
Integration mit anderen Programmen
fd-Suchergebnisse in fzf anzeigen: export FZF_DEFAULT_COMMAND='fd --type file'
fd-Ausgabe als Menü in rofi anzeigen: fd --type f -e pdf . $HOME | rofi -dmenu
- Ausgabe in einer Baumstruktur darstellen:
fd | tree --fromfile
- Suchergebnisse mit
xargs verwenden: fd -0 -e rs | xargs -0 wc -l
2 Kommentare
Unter den Neovim-Plugins gibt es eins, das
fdverwendet, also habe ich es installiert und benutze es seitdem, haha.Hacker-News-Kommentare
fdhäufig, um benutzerdefinierte Verzeichnisse zu durchsuchen. Verwende es täglich und es ist hervorragend.hyperfineist ebenfalls ein großartiges, unterschätztes Tool.bat,fd,hexylundhyperfine.fd,bat,numbat,hexylundhyperfineschnell installieren und auf Terminal Trove Screenshots davon sehen.fd,bat,numbat,hyperfineundhexylwerden bereitgestellt.fdundrgwürden übereinstimmen. Zum Beispiel haben sowohlfdals auchrgdas Flag--type, aber es bedeutet etwas anderes.fdbedeutet es Datei/Verzeichnis/symbolischer Link usw., beirgden MIME-Typ der Datei.fdhat das Flag--extension,rgjedoch nicht.ripgrepin VS Code, aber auf der Kommandozeile nutze ichgrep.findkann durchfd,timedurchhyperfineundgrepdurchripgrepersetzt werden.t-rec, dasasciinemain.gifumwandelt, undkoji, das manuelle Commits erstellt.fdwohl ausprobieren. Es ist schwer, sich die Argumentverwendung vonfindzu merken, deshalb nutze ich meistfind . | grep what_i_am_looking_for.xargs.fdmit dem Durchqueren von Symlink-Verzeichnissen umgeht.fdjeden Tag intensiv und installiere es standardmäßig auf neuen Geräten.findverwendet, aber benutzerfreundlich ist es nicht.find.fdhat zwar eine Option, um nichts zu ignorieren, aber ich kann sie mir nicht merken und kehre dann zufindzurück.fdist die Benutzung ähnlich schwer zu merken wie beitarundln.findkann ich mir das besser merken.