Remplacer find par fd sous Linux


  • Français


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

    Source

    Houssen Moshinaly

    Pour contacter personnellement le taulier :

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

    Copy code