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/--exec
Option führt für jedes Suchergebnis (parallel) einen externen Befehl aus. - Der
-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 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.