Linux / Commandes / which, whereis, locate / Localisation des commandes

Sous Linux, which est principalement utilisé pour trouver les fichiers exécutables dans PATH, whereis trouve les fichiers associés tels que les exécutables et les manuels dans des emplacements prédéterminés. locate recherche dans une base de données de noms de fichiers créée à l’avance, ce qui lui permet de trouver rapidement des fichiers ordinaires également, mais les résultats peuvent différer de l'état actuel.

Quelle commande doit être utilisée ?

  • Chemin du fichier exécutable : Vérifiez avec which find ou le command -v find du shell pour voir quelles commandes peuvent être trouvées dans l'environnement actuel.
  • Fichiers exécutables et manuels : Utilisez whereis find pour vérifier si les programmes et les manuels/sources associés se trouvent dans des emplacements connus.
  • Recherche par nom de fichier : locate recherche dans les chemins indexés, et si vous avez besoin des informations les plus récentes, vous pouvez utiliser find pour rechercher directement dans un répertoire spécifié.

La portée et les résultats de la recherche varient en fonction de la distribution, des programmes installés, des permissions utilisateur et des paramètres. Les chemins de sortie ci-dessous sont des exemples à des fins d'explication et peuvent ne pas être les mêmes sur tous les systèmes.

Vérifiez les exécutables avec which et command -v

PATH est une variable d'environnement qui contient une liste de répertoires à rechercher lorsqu'on cherche une commande à exécuter. La commande suivante trouve le chemin d'un exécutable nommé find.

which find

Par exemple, /usr/bin/find peut être affiché. Si aucun chemin n'est affiché, vérifiez si le programme est installé et vérifiez PATH. Cependant, l'implémentation de which et la gestion des alias diffèrent selon le système, il est donc également conseillé de vérifier les commandes intégrées du shell pour voir comment le shell actuel interprète les noms.

command -v find
type -a find

Dans Bash, command -v affiche le nom ou le chemin utilisé pour appeler une commande, et type -a affiche les éléments trouvés, tels que les alias, les fonctions, les commandes internes et les fichiers exécutables portant ce nom. Les commandes internes du shell ou les alias peuvent ne pas avoir de chemin de fichier exécutable séparé. Vous pouvez vérifier leur comportement dans Description de la commande interne Bash.

Trouver les fichiers associés avec whereis

whereis recherche les fichiers exécutables du programme, les sources et les fichiers manuels dans les emplacements standards et les chemins de recherche configurés.

whereis find

La liste des résultats indique les chemins trouvés après find:. Si vous voulez voir uniquement les fichiers exécutables, vous pouvez utiliser whereis -b find ; si vous voulez voir uniquement les fichiers manuels, vous pouvez utiliser whereis -m find. Si le fichier n'est pas installé ou est en dehors du chemin de recherche, il ne sera pas affiché, donc l'absence de sortie ne signifie pas nécessairement que le fichier est introuvable sur le système.

Dans util-linux, whereis -l affiche les emplacements de recherche. Pour des détails sur la plage de recherche, référez-vous à documentation util-linux whereis .

Recherche de noms de fichiers avec locate

locate recherche des entrées dans la base de données créée par updatedb qui correspondent à un nom ou un chemin. Par exemple, la commande suivante trouve les entrées dans les chemins indexés qui contiennent find.

locate find

La sortie peut inclure non seulement des fichiers exécutables mais aussi des manuels ou des fichiers avec d'autres noms. Les options peuvent varier en fonction de l'implémentation installée, donc vérifiez d'abord locate --help. Par exemple, dans plocate, vous pouvez limiter les résultats à un maximum de 10 comme suit.

locate -l 10 find

Si la base de données est obsolète, de nouveaux fichiers peuvent manquer et des chemins déjà supprimés peuvent rester. Les chemins exclus de la recherche et les permissions d'accès de l'utilisateur affectent également les résultats. La distribution peut mettre à jour périodiquement la base de données, et dans un environnement où l'administration du système est autorisée, vous pouvez la mettre à jour directement avec sudo updatedb. Comme cela peut analyser un large ensemble de répertoires système, vérifiez les politiques de gestion avant de l'exécuter. L'implémentation et les manuels associés peuvent être trouvés dans documentation officielle de plocate .

Vérifier l'état de l'installation et les fichiers les plus récents

locate peut ne pas être installé. Par exemple, vous pouvez utiliser le paquet Ubuntu 24.04 plocate, et dans un environnement avec des privilèges administratifs et un accès au dépôt de paquets, vous pouvez l'installer comme suit.

sudo apt update
sudo apt install plocate

Dans d'autres distributions ou versions, les noms des paquets et les méthodes de mise à jour peuvent différer, veuillez donc consulter la documentation de la distribution respective. Si la base de données n'existe pas encore ou n'est pas à jour après l'installation, l'administrateur peut avoir besoin de l'initialiser ou de la mettre à jour.

Pour trouver directement le fichier actuel dans votre répertoire personnel sans attendre la base de données, procédez comme suit :

find "$HOME" -name 'example.txt'

Cette commande recherche directement dans l'arborescence du répertoire spécifié, elle peut donc prendre plus de temps que locate et ne peut pas rechercher dans les répertoires pour lesquels vous n'avez pas les permissions d'accès. Remplacez example.txt par le nom réel du fichier que vous recherchez, et gardez les guillemets afin que le motif de recherche ne soit pas développé par le shell à l'avance.