GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ersetzen Sie unter Linux find durch fd

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:

$ 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 -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:

$ 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 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.


Linux
  1. Ersetzen Sie intelligente Anführungszeichen durch den Linux-Befehl sed

  2. Finden Sie Dateien und Verzeichnisse unter Linux mit dem Befehl find

  3. Ersetzen Sie Manpages durch Tealdeer unter Linux

  4. Eine einfache Möglichkeit, doppelte Dateien durch Hardlinks zu ersetzen?

  5. Suchen Sie eine Datei mit den Befehlen Suchen und Suchen in Linux

Linux-Suchbefehl mit praktischen Beispielen

Finden Sie Benutzerkonten mit leerem Passwort in Linux

So finden Sie installierte Anwendungen mit installierter Größe in Linux

Finden Sie Informationen zur Linux-Systemhardware mit Hwinfo

So finden Sie Dateien mit dem fd-Befehl in Linux

Tutorial für Linux-Suchbefehle (mit Beispielen)