fd - une alternative simple, rapide et conviviale à `find`
(github.com/sharkdp)fdest un programme pour trouver des éléments dans le système de fichiers, une alternative plus simple, plus rapide et plus conviviale à la commande classiquefind- Il ne prend pas en charge toutes les fonctionnalités de
find, mais propose des valeurs par défaut raisonnables pour les cas d’usage courants
- Il ne prend pas en charge toutes les fonctionnalités de
- Windows, macOS, Linux
- Syntaxe intuitive : utilisation simple sous la forme
fd PATTERN(plus pratique quefind -iname '*PATTERN*') - Prise en charge des expressions régulières et des motifs glob
- Exploration parallèle des répertoires pour des performances rapides
- Mise en couleur selon le type de fichier (similaire à
ls) - Exécution parallèle de commandes prise en charge
- Gestion intelligente de la casse : insensible à la casse par défaut, sensible si des majuscules sont incluses
- Les fichiers et répertoires cachés sont ignorés par défaut
- Les motifs de
.gitignoresont respectés par défaut - Le nom de la commande est 50 % plus court que
find
Utilisation
- Rechercher dans le répertoire courant les éléments contenant un motif :
fd netfl - Recherche possible avec une expression régulière :
fd '^x.*rc$' - Rechercher dans un répertoire spécifique :
fd passwd /etc - Lister récursivement tous les fichiers sous le répertoire courant :
fd - Rechercher un type de fichier spécifique (option
-e) :fd -e md - Rechercher un nom de fichier exact (option
-g) :fd -g libc.so /usr - Inclure les fichiers cachés et ignorés dans la recherche (options
-H,-I) :fd -H pre-commitfd -I num_cpu - Rechercher dans le chemin complet plutôt que seulement dans le nom du fichier (option
-p) :fd -p '.*/lesson-\d+/[a-z]+.(jpg|png)' - Exécuter une commande pour chaque résultat trouvé (
-x) :fd -e zip -x unzip - Passer tous les résultats trouvés à une seule commande (
-X) :fd -g 'test_*.py' -X vim - Syntaxe des placeholders
- {} : chemin complet du résultat trouvé
- {.} : chemin sans l’extension du fichier
- {/} : nom du fichier
- {//} : répertoire parent
- {/.} : nom du fichier sans extension
- Exclure un répertoire ou un fichier spécifique (option
-E) :fd -H -E .git - Il est possible de créer un fichier
.fdignorepour définir des motifs d’exclusion globaux - Supprimer les fichiers trouvés (
-X rm) :fd -H '^\.DS_Store$' -tf -X rm
Principales options de commande
- -H : inclure les fichiers et répertoires cachés dans la recherche
- -I : ignorer
.gitignoreet.fdignore - -p : rechercher dans le chemin complet
- -e : rechercher une extension spécifique
- -x : exécuter une commande sur les résultats trouvés
- -X : passer tous les résultats trouvés à une seule commande
- -E : exclure un fichier ou répertoire spécifique
Comparaison des performances (benchmark)
- Résultats d’un test de recherche sur 750 000 répertoires et 4 millions de fichiers
- Performance de
find: environ 19,9 secondes - Performance de
fd: environ 854,8 ms
- Performance de
- 23 fois plus rapide que
find
Intégration avec d’autres programmes
- Afficher les résultats de recherche
fddans fzf :export FZF_DEFAULT_COMMAND='fd --type file' - Afficher la sortie de
fdcomme menu dans rofi :fd --type f -e pdf . $HOME | rofi -dmenu - Afficher la sortie sous forme d’arborescence :
fd | tree --fromfile - Utiliser les résultats de recherche dans xargs :
fd -0 -e rs | xargs -0 wc -l
2 commentaires
Il y a un plugin Neovim qui utilise
fd, alors je l’ai installé et, finalement, je m’en sers encore aujourd’hui haha.Discussion Hacker News
--type, mais il n’a pas le même sens.--extension, mais pas rg.findpeut être remplacé par fd,timepar hyperfine,greppar ripgrep..gif, ou koji pour créer des commits manuellement.find . | grep what_i_am_looking_for.