Viele Linux-Programmierer verwenden find jeden einzelnen Tag ihrer Karriere beherrschen. Aber find gibt eine begrenzte Menge von Dateisystemeinträgen an, und wenn Sie eine große Menge von find ausführen müssen Operationen, es ist nicht einmal sehr schnell. Stattdessen verwende ich lieber den Rust fd Befehl, weil er vernünftige Standardwerte bietet, die für die meisten Anwendungsfälle funktionieren.
Wie es in der README heißt, "fd ist ein Programm, um Einträge in Ihrem Dateisystem zu finden. Es ist eine einfache, schnelle und benutzerfreundliche Alternative zu find ." Es verfügt über eine parallelisierte Verzeichnisdurchquerung, 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 fd installieren aus Ihrem Software-Repository (eine Liste der verfügbaren Pakete finden Sie auf der fd-Seite von Repology.) Zum Beispiel auf 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
Führen Sie für eine einfache Suche fd aus 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/githu b.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 für fd an , 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:
/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 -x angeben oder -X .
- Der
-x/--execOption führt für jedes Suchergebnis (parallel) einen externen Befehl aus. - Der
-X/--exec-batchOption 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 n geändert wurden Anzahl der Tage, verwenden Sie den --changed-within Möglichkeit:
/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 den --changed-before n Möglichkeit:
$ fd . '/home/ssur/Work/' --changed-before 365d
Weitere Linux-Ressourcen
- Spickzettel für Linux-Befehle
- Spickzettel für fortgeschrittene Linux-Befehle
- Kostenloser Online-Kurs:RHEL Technical Overview
- Spickzettel für Linux-Netzwerke
- SELinux-Spickzettel
- Spickzettel für allgemeine Linux-Befehle
- Was sind Linux-Container?
- Unsere neuesten Linux-Artikel
Hier, . fungiert als Platzhaltereintrag, um fd anzuweisen um alle Dateien zurückzugeben.
Um mehr über die Funktionalitäten von fd zu erfahren , konsultieren Sie dessen Dokumentation auf GitHub.
Schlussfolgerung
Eine Sache gefällt mir an fd besonders gut ist, dass das Suchmuster standardmäßig die Groß-/Kleinschreibung nicht beachtet, was es einfacher macht, Dinge zu finden, selbst wenn Sie ungenaue Kenntnisse darüber haben, wonach Sie suchen. Besser noch, es automatisch schaltet auf Groß-/Kleinschreibung um, wenn das Muster einen Großbuchstaben enthält.
Ein weiterer Vorteil ist die Farbcodierung zur Hervorhebung verschiedener Dateitypen.
Wenn Sie dieses erstaunliche Rust-Tool bereits verwenden, teilen Sie uns Ihre Meinung bitte in den Kommentaren mit.