web-dev-qa-db-fra.com

Différence entre les commandes "whereis", "Locate" et "find"

Quelles sont les différences entre les commandes whereis, locate et find sur Ubuntu? Quelles sont les différences fondamentales du point de vue de la recherche?

2
Avani badheka

De page d'aide de GNU findutils

Le programme find cherche dans une arborescence de répertoires pour trouver un fichier ou un groupe de fichiers. Il parcourt l'arborescence de répertoires et signale toutes les occurrences d'un fichier correspondant aux spécifications de l'utilisateur. Le programme de recherche comprend une capacité de recherche très puissante.

Le programme de localisation analyse une ou plusieurs bases de données de noms de fichiers et affiche les correspondances éventuelles. Ceci peut être utilisé comme une commande de recherche très rapide si le fichier était présent lors de la dernière mise à jour de la base de données de noms de fichiers.

Donc, find est ce que vous utilisez lorsque vous souhaitez rechercher des critères particuliers et manipuler des fichiers. Il a beaucoup plus d'options que locate, ce qui permet un contrôle beaucoup plus précis des résultats. Il est lent car il exécute le ou les tests demandés sur chaque fichier pour voir s'il correspond.

locate est utilisé pour rechercher rapidement quelque chose dans l'ensemble du système. Vous pouvez l'utiliser si vous ne savez pas où se trouve quelque chose ou si vous souhaitez rechercher tous les fichiers associés dispersés dans divers emplacements inconnus. C'est rapide car il utilise une base de données binaire pour indexer le système. Pour que de nouveaux fichiers apparaissent, lancez d'abord Sudo updatedb (la base de données mise à jour une fois par jour par cron

la commande whereis renvoie simplement l'emplacement des exécutables, des pages de manuel et des sources d'un programme (voir man whereis)

5
Zanna

La grande différence est que find cherche des fichiers réels récursivement dans un répertoire donné, tandis que locate cherche dans une base de données sans nécessiter de répertoire spécifique. Ainsi, si vous avez enregistré un fichier avant de mettre à jour la base de données, find le trouvera, mais locate ne le trouvera pas.

Quant à whereis et which, ils ne recherchent que dans les répertoires mentionnés dans votre variable PATH et uniquement dans ceux dotés du jeu d'autorisations exécutables.

1