A linux terminal open on a laptop running Ubuntu
Agence web » Actualités du digital » Localisez vs finir vs où est: les commandes de recherche Linux comparées

Localisez vs finir vs où est: les commandes de recherche Linux comparées

Linux offre plus d'une façon de trouver ce que vous recherchez, y compris des commandes comme Locate, Find et où. Savoir quand et quelle commande utiliser peut vous faire gagner du temps et de la frustration. Plongeons-nous dans chacun et voyons ce qui fonctionne mieux dans différentes situations.

En rapport

Comment utiliser toutes les commandes de recherche de Linux

Apprenez lequel des six différents outils de recherche Linux que vous devez utiliser et pourquoi.

La commande Locate

La commande Locate est conçue pour trouver des fichiers et des répertoires en fonction de leurs noms ou de leurs parties de leurs noms, presque instantanément. C'est incroyablement rapide car il ne recherche pas réellement votre système de fichiers en temps réel. Au lieu de cela, il interroge une base de données prédéfinie, communément nommée mLocate.db, Plocate.db, ou simplement localiser.db, selon votre distribution.

Cette base de données n'est pas mise à jour en temps réel. Si vous venez de créer ou de supprimer un fichier, Locate pourrait ne pas le savoir avant la prochaine mise à jour de la base de données. La base de données est rafraîchie régulièrement par un processus système, généralement via un travail cron qui s'exécute quotidiennement. Vous pouvez également mettre à jour manuellement la base de données à l'aide de « Sudo UpdatedB », bien que l'indexation de l'ensemble du système de fichiers puisse prendre un certain temps.

La syntaxe de base est rafraîchissante et simple:

locate -i filename 

Si le fichier existe et que la base de données est à jour, Locate répertorie tous les chemins contenant « my_script.sh ». L'option -i rend votre recherche de recherche insensible.

Vous pouvez également rechercher tous les fichiers avec une extension spécifique, compter les correspondances à l'aide de l'option -c ou limiter la sortie avec l'option -N. La commande Locate prend en charge l'appariement des modèles génériques et même les expressions régulières de base, offrant plus de contrôle sur vos recherches.

Localisez vs MLOCE contre Plocation

Au fil du temps, l'utilitaire de localisation d'origine a été remplacé dans la plupart des distributions par MLocate, qui a introduit des améliorations importantes, telles que le respect des autorisations des utilisateurs, vous ne voyez donc que des fichiers auxquels vous êtes autorisé à accéder.

Lorsque MLocate est installé, il fournit la commande Locate elle-même. Donc, même si vous tapez de localisation, vous utilisez réellement MLOCOSE en arrière-plan. Vous pouvez le confirmer en vérifiant la version:

locate --version

Cela montrera quelle version locale gère vos recherches.

Plus récemment, une nouvelle implémentation appelée Plocate a commencé à remplacer MLocate dans certaines distributions. PLOCOT est plus rapide et plus efficace, en utilisant un index compressé pour réduire le temps de recherche et l'utilisation du disque, en particulier utile sur les systèmes avec un grand nombre de fichiers. Fedora, par exemple, utilise désormais PLOCOSE par défaut, et de nombreuses autres distributions commencent à suivre.

Vous pouvez également installer PLOCOT en utilisant votre gestionnaire de package par défaut comme sur Ubuntu, exécuter:

sudo apt install plocate

Encore une fois, même lorsque Plocate est installé, la commande que vous tapez reste localisée, donc rien ne change dans la façon dont vous l'utilisez. Pour la plupart des utilisateurs, les fonctionnalités et la syntaxe sont les mêmes. Cependant, quelques options avancées peuvent différer légèrement entre MLocate et Plocate.

En rapport

Comment trouver des fichiers et des dossiers dans Linux en utilisant la ligne de commande

La plupart des gens utilisent un gestionnaire de fichiers graphiques pour trouver des fichiers dans Linux, comme Nautilus dans Gnome, Dolphin dans KDE et Thunar dans XFCE.

La commande find

Contrairement à la commande Locate, la commande recherche recherche de fichiers et de répertoires en temps réel en traversant directement votre hiérarchie de répertoire spécifiée. Il ne s'appuie pas sur une base de données, ce qui signifie qu'il renvoie toujours les informations les plus à jour. Cependant, cela signifie également qu'il peut être plus lent que localiser, en particulier lors de la recherche de grands systèmes de fichiers.

En rapport

Comment utiliser la commande find dans Linux

Utilisez Find avec xargs et EXEC pour faire passer vos recherches de fichiers Linux au niveau suivant.

Ce qui distingue la recherche, c'est sa capacité à rechercher sur une large gamme de critères – pas juste du nom, mais aussi du type, de la taille, des autorisations, de la propriété, du temps de modification et bien plus encore. Comme si cela ne suffisait pas, trouver peut également exécuter des commandes arbitraires (comme RM, CP ou CHMOD) sur les fichiers qu'il trouve à l'aide de l'option -exec.

Voici la syntaxe de base:

find (path) (options) (expression)
  • chemin: Par où démarrer la recherche (utiliser. Pour le répertoire actuel)
  • Options et expression: Que rechercher et comment filtrer les résultats

Par exemple, pour trouver un fichier nommé config.xml dans votre répertoire domestique et ses sous-répertoires, exécutez:

find /home/your_username -name "config.xml"

Semblable à Locate, Rechercher peut effectuer des recherches insensibles à la casse à l'aide de l'option -iname (nom insensible):

find /var/log -iname "error*.log"

Cela trouverait des fichiers comme error.log, error.log et error-messages.log dans / var / log.

En rapport

Comment rechercher récursivement les noms de répertoires dans Linux

Tout dans Linux est stocké dans des répertoires, et lors de l'écriture de scripts bash, il est souvent utile de rechercher des répertoires par son nom.

Vous pouvez également rechercher des types de fichiers spécifiques. Par exemple, pour trouver tous les répertoires (d) dans le chemin actuel, utilisez:

find . -type d

Ou vous pouvez trouver des fichiers plus grands que n'importe quelle taille, comme 100 Mo (+ 100m) dans votre répertoire / opt avec:

find /opt -size +100M

De plus, vous pouvez rechercher des fichiers vides, des répertoires vides ou des éléments en fonction de leurs temps de modification spécifiques. Vous pouvez également exécuter d'autres commandes sur chaque fichier trouvé à l'aide de trouver, tels que la suppression de tous les fichiers .tmp avec ceci:

find . -name "*.tmp" -exec rm {} ;

Le commandement where

La commande où est très différente de la localisation et de la recherche. Bien que les deux premiers soient des outils de recherche de fichiers à usage général, où est une mission très spécifique: pour localiser le binaire (exécutables), les fichiers source et les pages manuelles pour une commande donnée.

Il est particulièrement utile lorsque vous essayez de comprendre comment une commande est installée sur votre système ou lorsque vous résolvez les problèmes avec l'exécution du programme.

En rapport

Ces 4 commandes Linux vous montrent le chemin d'accès d'un fichier exécutable

Apprenez à trouver des chemins exécutables dans Linux en utilisant les commandes de type -a et de commande -v avec des exemples clairs et une syntaxe.

Contrairement à Locate and Find, où les recherches sont uniquement dans un ensemble prédéfini de répertoires où ces types de fichiers sont généralement stockés – des places comme / bin, / usr / bin, et / usr / local / bin pour les binaires; / usr / share / man pour les pages manuelles; et divers répertoires de code source.

Par exemple, si vous souhaitez trouver le binaire LS, son code source (si disponible) et ses pages d'homme, vous pouvez exécuter:

whereis ls

Cela vous dira que le binaire LS est situé à « / bin / ls » et sa page man est à « /usr/share/man/man1/ls.1.gz ».

Si vous vous souciez uniquement du chemin exécutable, utilisez l'option -b (binaire):

whereis -b ls

Pour trouver uniquement les pages manuelles, utilisez l'option -m (man):

whereis -m bash

Vous pouvez également demander où se trouvent plusieurs commandes à la fois:

whereis grep sed awk

Souvent, les fichiers source ne sont pas installés par défaut. Dans de tels cas, la sortie ne peut inclure le nom de commande que si aucune source n'est trouvée dans les emplacements standard.

Quand utiliser chaque commande

Vous pouvez utiliser la commande Locate lorsque vous souhaitez une vue d'ensemble rapide à l'échelle du système des fichiers spécifiques avec un certain nom. En outre, cela fonctionne mieux lorsque vous êtes raisonnablement sûr que le fichier n'est pas neuf, ou que vous avez récemment actualisé la base de données.

D'un autre côté, la commande Find est plus adaptée lorsque vous devez rechercher en fonction de critères autres que le nom, tels que la taille du fichier, le type, les autorisations ou la date de modification. Il est particulièrement utile lorsque vous souhaitez rechercher profondément une arborescence de répertoire spécifique, ou lorsque le fichier que vous recherchez peut être nouveau et non encore inclus dans la base de données Locate. Trouver également brille lorsque vous avez besoin de résultats en temps réel ou que vous souhaitez effectuer des actions telles que la suppression, la copie ou la modification des autorisations sur les fichiers que vous trouvez.

La commande WHERE est utile lorsque vous avez spécifiquement besoin de localiser l'exécutable binaire, les fichiers source ou les pages manuelles d'une commande. Il est particulièrement utile lorsque vous résumez les problèmes avec le chemin de votre système ou que vous essayez de comprendre où et comment un programme est installé.


Parfois, vos besoins peuvent se chevaucher entre les trois commandes. Par exemple, si Locate renvoie trop de résultats, vous pouvez utiliser sa sortie pour réduire un chemin de départ pour une recherche de recherche plus précise. Ces commandes ne s'excluent pas mutuellement – elles fonctionnent mieux lorsqu'ils sont utilisés ensemble dans le cadre de votre boîte à outils Linux.

★★★★★