2021-01-21 22:08 Temps de lecture : 13 min

Comment utiliser la commande fd sous Linux

Sous Linux, fd se présente comme une alternative plus intuitive à la commande find. Elle offre une syntaxe simplifiée, des options par défaut intelligentes et un comportement prévisible. Examinons ses capacités de plus près.

fd face à find : quelles distinctions ?

La commande fd n'a pas pour objectif de se substituer à la traditionnelle commande find, qui est une fonction historique de Linux. fd cherche plutôt à répondre aux besoins courants de la majorité des utilisateurs de find, mais de manière plus facile. De plus, elle se révèle souvent huit à neuf fois plus rapide que find. Vous pouvez consulter les comparatifs de performance sur la page du projet sur GitHub.

fd affiche une sortie colorée, semblable à celle de certains modes de la commande ls. Elle effectue une recherche récursive, mais exclut les répertoires cachés par défaut. Elle prend en compte les fichiers de configuration Git, et ignorera automatiquement les motifs définis dans votre fichier ".gitignore".

Par défaut, fd ne tient pas compte de la casse. Toutefois, si votre requête de recherche contient une majuscule, fd devient sensible à la casse. Bien entendu, ces paramètres par défaut peuvent être modifiés, mais ils conviennent généralement dans la plupart des cas.

Installation de fd

Si vous utilisez Ubuntu 19.04 (Disco Dingo) ou une version ultérieure, vous pouvez installer fd directement en utilisant le paquet officiel. Pour les anciennes versions d'Ubuntu, consultez les instructions d'installation disponibles sur la page GitHub du projet.

Pour installer fd, saisissez la commande suivante dans votre terminal :

sudo apt-get install fd-find

Sur Ubuntu, la commande est appelée fdfind, afin d'éviter tout conflit de nom avec un autre utilitaire existant. Pour utiliser la commande sous le nom fd, vous pouvez configurer un alias :

alias fd=fdfind

Pour que l'alias soit permanent, c'est-à-dire qu'il soit conservé après un redémarrage, ajoutez-le à votre fichier ".bashrc" ou ".bash_aliases".

Pour installer fd sur Fedora, utilisez cette commande :

sudo dnf install fd-find

Sur Manjaro, exécutez la commande suivante :

sudo pacman -Syu fd

fd contre fdfind

Pour éviter toute confusion, nous avons conservé le nom par défaut de la commande, fdfind, sur notre machine de test Ubuntu. fd et fdfind sont en réalité la même commande, comme le montre l'exemple suivant (si vous demandez à fdfind d'afficher sa version, elle se présente comme "fd") :

fdfind --version

Nous utiliserons le terme "fd" dans cet article, mais dans les exemples, nous utiliserons la commande "fdfind" spécifique à Ubuntu. Sur les autres distributions Linux, vous pouvez saisir "fd" au lieu de "fdfind" pour simplifier la saisie.

Recherches simples avec fd

Si vous lancez fd sans options spécifiques, son comportement se rapproche de celui de la commande ls, à la différence qu'elle liste tous les fichiers, y compris ceux des sous-répertoires.

Pour tester, tapez simplement :

fdfind

La sortie s'affiche avec différentes couleurs pour les différents types de fichiers et de répertoires.

Pour rechercher des fichiers d'un type spécifique, utilisez l'option -e (extension). Il n'est pas nécessaire de faire précéder l'extension d'un point, ni de respecter la casse.

Par exemple, pour afficher tous les fichiers PNG, vous pouvez saisir :

fdfind -e png

Seuls les fichiers image PNG seront alors listés.

Pour rechercher un fichier en particulier, indiquez son nom directement dans la ligne de commande :

fdfind index.page

Le fichier est trouvé, même s'il est situé dans un sous-répertoire. Il n'a pas été nécessaire de demander à fd d'effectuer une recherche récursive.

Pour limiter la recherche à un répertoire spécifique, incluez le chemin du répertoire dans la ligne de commande. La commande suivante recherche tous les fichiers contenant "passwd" dans le répertoire "/etc" :

fdfind passwd /etc

Cet exemple recherche tous les fichiers de code source C qui contiennent le mot "coord" dans leur nom :

fdfind -e c coord

Deux fichiers correspondants ont été trouvés.

fd et Git

Git est un outil de gestion de versions de code source très populaire. Si vous utilisez Git, vous utilisez probablement des fichiers ".gitignore" pour indiquer à Git les fichiers à ignorer lors du suivi des modifications. Par défaut, fd prend en compte les paramètres définis dans vos fichiers ".gitignore".

Dans cet exemple, nous avons un dépôt Git et un fichier ".gitignore". Nous exécutons la commande suivante pour vérifier leur existence :

ls -adl .git*

Demandons à fd de lister tous les fichiers contenant "coord" dans leur nom. Ensuite, nous allons répéter la recherche en utilisant l'option -I (ne pas ignorer). Cela indique à fd de passer outre les paramètres du fichier ".gitignore" et de signaler tous les fichiers correspondants.

Pour effectuer ces opérations, entrez les commandes suivantes :

fdfind coord
fdfind coord -I

Les deux fichiers supplémentaires affichés dans le second ensemble de résultats sont des fichiers objets. Ces fichiers sont générés lors de la compilation d'un programme à partir de ses fichiers sources. Ils sont ensuite utilisés par l'éditeur de liens pour créer la version exécutable finale du programme.

Les fichiers objets sont généralement ignorés par les systèmes de gestion de version. Ils sont recréés à chaque compilation, il n'est donc pas utile de les conserver. Une entrée dans le fichier ".gitignore" indique à Git d'ignorer les fichiers objets, et fd les ignore également par défaut.

L'option -I (ne pas ignorer) force fd à afficher tous les résultats, sans tenir compte du fichier ".gitginore".

Types de fichiers et sensibilité à la casse

Vous pouvez demander à fd de rechercher des répertoires, des fichiers (y compris les fichiers exécutables et vides) et des liens symboliques. Pour cela, utilisez l'option -t (type), suivie de l'une des lettres ci-dessous :

f: fichier.
d: répertoire.
l: lien symbolique.
x: fichier exécutable.
e: fichier vide.

La commande suivante recherche un répertoire nommé "images" :

fdfind -td images

Un résultat correspondant est trouvé, il s'agit d'un sous-répertoire du répertoire courant.

Voyons maintenant comment fonctionne la sensibilité à la casse avec les motifs de recherche. Nous allons rechercher, dans un premier temps, les fichiers contenant "geo" dans leur nom, puis les fichiers contenant "Geo" :

fdfind -tf geo
fdfind -tf Geo

Dans la première commande, nous avons utilisé un motif de recherche en minuscules. Par conséquent, fd a fonctionné sans tenir compte de la casse, ce qui signifie que "Geo" et "geo" sont considérés comme des correspondances valides.

La deuxième commande contenait une majuscule, ce qui a activé la sensibilité à la casse. Seule la chaîne "Geo" est donc considérée comme une correspondance.

Exécution de commandes

La commande fd permet d'exécuter une autre commande sur chacun des fichiers trouvés.

Supposons que nous savons qu'un fichier ZIP se trouve quelque part dans notre arborescence de répertoires de code source. Nous pouvons le trouver en utilisant la commande suivante, qui recherche les fichiers portant l'extension ZIP :

fdfinf -e zip

Avec l'option -x (exec), vous pouvez passer chaque fichier trouvé à une autre commande. Par exemple, nous pouvons décompresser le fichier ZIP en utilisant l'utilitaire unzip. Le "{}" est un espace réservé qui représente le fichier trouvé :

fdfind -e zip -x unzip {}

Cela décompressera le fichier dans le répertoire de travail actuel. Si nous souhaitons que le fichier soit décompressé dans le répertoire contenant le fichier ZIP, nous pouvons utiliser les espaces réservés suivants :

{}: Chemin complet du fichier trouvé.
{/}: Nom du fichier trouvé.
{//}: Répertoire contenant le fichier trouvé.
{/.}: Nom du fichier trouvé, sans l'extension.

Pour décompresser le fichier ZIP dans son propre répertoire, nous pouvons utiliser l'option unzip -d (répertoire), et insérer l'espace réservé du répertoire parent ({//}):

fdfind -e zip -x unzip {} -d {//}

Le fichier ZIP est alors localisé et décompressé dans son répertoire d'origine.

Votre commande de recherche préférée ?

Grâce à sa simplicité et à sa capacité à couvrir les cas d'utilisation les plus courants, fd pourrait bien devenir votre commande de recherche favorite. Si vous avez besoin de fonctionnalités plus avancées, vous pouvez toujours utiliser la commande find.

Auteur
France

Rédacteur tech, guides pratiques et astuces numériques.