Advertisements

Ersetzen Sie find durch fd unter Linux

Viele Linux-Programmierer verwenden die find Befehl an jedem einzelnen Tag ihrer Karriere. Aber find gibt einen begrenzten Satz von Dateisystemeinträgen, und wenn Sie einen großen Satz von find Operationen, es ist nicht einmal sehr schnell. Also verwende ich lieber den Rust fd Befehl, da er sinnvolle Standardeinstellungen bereitstellt, die für die meisten Anwendungsfälle funktionieren.

Wie in der README-Datei steht: “fd ist ein Programm zum Auffinden von Einträgen in Ihrem Dateisystem. Es ist eine einfache, schnelle und benutzerfreundliche Alternative zu find.” Es verfügt über einen parallelisierten Verzeichnisdurchlauf, sodass mehrere Verzeichnisse gleichzeitig durchsucht werden können. Es unterstützt reguläre Ausdrücke (regex) und globbasierte Muster.

fd installieren

Unter Linux können Sie installieren fd aus Ihrem Software-Repository (eine Liste der verfügbaren Pakete finden Sie auf der fd-Seite zu Repology.) Zum Beispiel bei Fedora:

$ sudo dnf install fd-find

Verwenden Sie unter macOS MacPorts oder Homebrew.

Alternativ können Sie den Cargo-Paketmanager von Rust verwenden:

$ cargo install fd-find

Verwenden Sie fd

Um eine einfache Suche durchzuführen, führen Sie fd nach jedem Argument, wie zum Beispiel:

$ fd sh
registry/src/github.com-1ecc6299db9ec823/cc-1.0.67/src/bin/gcc-shim.rs
registry/src/github.com-1ecc6299db9ec823/exa-0.10.1/completions/completions.bash
registry/src/github.com-1ecc6299db9ec823/exa-0.10.1/completions/completions.fish
registry/src/github.com-1ecc6299db9ec823/exa-0.10.1/completions/completions.zsh
registry/src/github.com-1ecc6299db9ec823/exa-0.10.1/xtests/run.sh
registry/src/github.com-1ecc6299db9ec823/git2-0.13.18/src/stash.rs
registry/src/github.com-1ecc6299db9ec823/libc-0.2.94/src/unix/solarish
registry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.19+1.1.0/libgit2/cmake/SelectHashes.cmake
registry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.19+1.1.0/libgit2/include/git2/stash.h
registry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.19+1.1.0/libgit2/include/git2/sys/hashsig.h
registry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.19+1.1.0/libgit2/script/backport.sh
registry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.19+1.1.0/libgit2/script/leaks.sh
registry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.19+1.1.0/libgit2/script/valgrind.sh
registry/src/github.com-1ecc6299db9ec823/libgit2-sys-0.12.19+1.1.0/libgit2/src/config_snapshot.c
[...]

Wenn Sie nach einem bestimmten Verzeichnis suchen möchten, geben Sie den Verzeichnispfad als zweites Argument an fd, wie zum Beispiel:

$ fd passwd /etc
/etc/pam.d/passwd
/etc/passwd
/etc/passwd-
/etc/security/opasswd

Um nach einer bestimmten Dateierweiterung zu suchen, verwenden Sie -e als eine Option. Zum Beispiel:

$ fd . '/home/ssur/exa' -e md
/home/ssur/exa/README.md
/home/ssur/exa/devtools/README.md
/home/ssur/exa/man/exa.1.md
/home/ssur/exa/man/exa_colors.5.md
/home/ssur/exa/xtests/README.md
$

Sie können einen Befehl auch ausführen, indem Sie angeben -x oder -X.

  • Die -x/--exec Option führt für jedes Suchergebnis (parallel) einen externen Befehl aus.
  • Die -X/--exec-batch Option startet den externen Befehl einmal mit allen Suchergebnissen als Argumente.

Um beispielsweise alle ZIP-Archive rekursiv zu finden und zu entpacken:

$ fd -e zip -x unzip

Oder um alle Dateien in einem bestimmten Verzeichnis aufzulisten, die innerhalb der letzten . geändert wurden n Anzahl der Tage, verwenden Sie die --changed-within Möglichkeit:

$ fd . '/home/ssur/Work/' --changed-within 10d
/home/ssur/Work/wildfly/connector/src/main/java/org/jboss/as/connector/subsystems/data_sources/JdbcDriverAdd.java
/home/ssur/Work/wildfly/connector/src/main/java/org/jboss/as/connector/subsystems/data_sources/JdbcExample.java
[...]

Und um alle Dateien zu durchsuchen, die vor einer bestimmten Anzahl von Tagen geändert wurden, verwenden Sie die --changed-before n Möglichkeit:

$ fd . '/home/ssur/Work/' --changed-before 365d

Weitere Linux-Ressourcen

Hier, . fungiert als Wildcard-Eintrag, um zu instruieren fd um alle Dateien zurückzugeben.

Um mehr über die Funktionen von . zu erfahren fd, konsultieren Sie die Dokumentation auf GitHub.

Abschluss

Eine Sache gefällt mir besonders gut fd ist, dass das Suchmuster standardmäßig die Groß-/Kleinschreibung nicht berücksichtigt, was es einfacher macht, Dinge zu finden, selbst wenn Sie nicht genau wissen, wonach Sie suchen. Noch besser, es automatisch schaltet auf Groß-/Kleinschreibung um, wenn das Muster Großbuchstaben enthält.

Ein weiterer Vorteil ist, dass es Farbcodierung verwendet, um verschiedene Dateitypen hervorzuheben.

Wenn Sie dieses erstaunliche Rust-Tool bereits verwenden, teilen Sie uns Ihre Meinung bitte in den Kommentaren mit.

Ersetzen Sie find durch fd unter Linux

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to top