Remplacer find par fd sous Linux

De nombreux programmeurs Linux utilisent le find
commandent 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 sensées qui fonctionnent pour la plupart des cas d’utilisation.
Comme son LISEZ-MOI dit, “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, ce qui lui permet de 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
à partir de votre référentiel de logiciels (une liste des packages disponibles se trouve sur le fd page sur Repologie.) Par exemple, sur Fedora :
$ sudo dnf install fd-find
Sur macOS, utilisez MacPorts ou Homebrew.
Vous pouvez également utiliser le gestionnaire de packages Cargo de Rust :
$ cargo install fd-find
Utiliser fd
Pour effectuer une recherche simple, exécutez fd
après toute dispute, comme :
$ 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
[...]
Si vous souhaitez rechercher un répertoire spécifique, fournissez le chemin du répertoire comme deuxième argument à fd
, tel 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 example:
$ 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 alors -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 de la dernière m nombre de jours, utilisez le --changed-within
option:
$ 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
m option:
$ fd . '/home/ssur/Work/' --changed-before 365d
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 son Documentation sur GitHub.
Conclusion
Une chose que j’aime particulièrement 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 à la casse si le motif contient un caractère majuscule.
Un autre avantage est qu’il utilise un codage 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.