GNU/Linux >> Tutoriels Linux >  >> Linux

Remplacer find par fd sous Linux

De nombreux programmeurs Linux utilisent le find commander chaque jour de leur carrière. Mais find donne un ensemble limité d'entrées de système de fichiers, et si vous devez faire un grand ensemble de find opérations, ce n'est même pas très rapide. Donc à la place, je préfère utiliser le Rust fd car elle fournit des valeurs par défaut sensibles qui fonctionnent pour la plupart des cas d'utilisation.

Comme le dit son README, "fd est un programme pour trouver des entrées dans votre système de fichiers. C'est une alternative simple, rapide et conviviale à find ." Il propose une traversée de répertoires parallélisée, de sorte qu'il peut rechercher plusieurs répertoires à la fois. Il prend en charge les expressions régulières (regex) et les modèles basés sur glob.

Installer fd

Sous Linux, vous pouvez installer fd depuis votre référentiel de logiciels (une liste des packages disponibles se trouve sur la page fd de Repology.) Par exemple, sur Fedora :

$ sudo dnf install fd-find 

Sur macOS, utilisez MacPorts ou Homebrew.

Alternativement, vous pouvez utiliser le gestionnaire de packages Cargo de Rust :

$ cargo install fd-find 

Utiliser fd

Pour faire une recherche simple, lancez fd après n'importe quel argument, tel que :

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

Si vous souhaitez rechercher un répertoire spécifique, fournissez le chemin du répertoire comme second argument de fd , tels que :

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

Pour rechercher une extension de fichier particulière, utilisez -e Comme une option. Par exemple :

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

Vous pouvez également exécuter une commande en fournissant -x ou -X .

  • Le -x/--exec L'option exécute une commande externe pour chaque résultat de recherche (en parallèle).
  • Le -X/--exec-batch L'option lance la commande externe une fois avec tous les résultats de la recherche comme arguments.

Par exemple, pour rechercher récursivement toutes les archives ZIP et les décompresser :

$ fd -e zip -x unzip 

Ou, pour répertorier tous les fichiers d'un répertoire particulier qui ont été modifiés au cours des derniers n nombre de jours, utilisez le --changed-within choix :

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

Et pour rechercher tous les fichiers qui ont été modifiés avant un certain nombre de jours, utilisez le --changed-before n choix :

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

Plus de ressources Linux

  • Aide-mémoire des commandes Linux
  • Aide-mémoire des commandes Linux avancées
  • Cours en ligne gratuit :Présentation technique de RHEL
  • Aide-mémoire sur le réseau Linux
  • Aide-mémoire SELinux
  • Aide-mémoire sur les commandes courantes de Linux
  • Que sont les conteneurs Linux ?
  • Nos derniers articles Linux

Ici, . agit comme une entrée générique pour indiquer fd pour renvoyer tous les fichiers.

Pour en savoir plus sur les fonctionnalités de fd , consultez sa documentation sur GitHub.

Conclusion

Une chose que j'aime particulièrement à propos de fd est que le modèle de recherche est insensible à la casse par défaut, ce qui facilite la recherche même lorsque vous avez une connaissance imprécise de ce que vous recherchez. Mieux encore, il automatiquement passe en sensible à la casse si le modèle contient un caractère majuscule.

Un autre avantage est qu'il utilise un code couleur pour mettre en évidence différents types de fichiers.

Si vous utilisez déjà cet incroyable outil Rust, veuillez nous faire part de vos réflexions dans les commentaires.


Linux
  1. Remplacez les guillemets intelligents par la commande Linux sed

  2. Rechercher des fichiers et des répertoires sous Linux avec la commande find

  3. Remplacer les pages de manuel par Tealdeer sous Linux

  4. N moyen facile de remplacer les fichiers en double par des liens physiques ?

  5. Comment rechercher des fichiers avec la commande fd sous Linux

Commande de recherche Linux avec des exemples pratiques

Trouver des comptes d'utilisateurs avec un mot de passe vide sous Linux

Comment trouver des applications installées avec une taille installée sous Linux

Trouver des informations sur le matériel du système Linux avec Hwinfo

Comment rechercher des fichiers avec la commande fd sous Linux

Tutoriel sur la commande de recherche Linux (avec exemples)