Meilleure commande pour trouver un fichier dans tout /

locate, find, etc.
Quelle est la commande la plus sûre, la plus complète, en user ou en root et récursive ?
danke !

locate recherche dans une base d’indexation, mise à jour par la commande updatedb (cf /etc/cron.daily/mlocate).
L’index répertorie tous les fichiers du systèmes, à l’exception de certaines exclusions « PRUNE » définies dans /etc/updatedb.conf

find recherche directement sur les fichiers, donc est plus sûr si le fichier que tu cherches est plus récent que la dernière indexation ; mais plus lent, et ne pourra accéder qu’aux dossiers lisibles par l’utilisateur qui lance la commande.
find a aussi plus d’option (peut rechercher en fonction du propriétaire du fichier, de la date de modification, etc.).

locate = cavalerie légère
find = artillerie lourde

locate= s’intéresser aux seuls noms
find = s’intéresser aux noms, au contenu, à la date …

find = faire gratter le disque tout du long des données réelles, solliciter le processeur, attendre loooongtemps.
locate = parcourir un index et non pas toutes les données sur le disque, obtenir rapidement sa réponse.

Locate ne parcourt pas les données réelles à la différence de find.
Il faut aussi penser à rafraichir l’index de locate à intervalles réguliers.

Merci à vous deux mais je ne comprends pas bien le principe de “rafraîchir l’index”.
Qu’appelle-t-on ‘index’ dans ce cas ?

EDIT : je suis long et lourd :unamused:
J’ai compris que l’index dont vous parliez est à créer pour locate.
je vais m’y atteler.
Le mieux : locate ou Slocate
je suppose que le second est plus “secure” ?

kna l’explique

[quote]
locate recherche dans une base d’indexation, mise à jour par la commande updatedb (cf /etc/cron.daily/mlocate).
L’index répertorie tous les fichiers du système … [/quote]

locate recherche dans un fichier qui recense tous les noms des fichiers. Nous appelons ce fichier que locate scrute “index” comme une “table des matières” d’un livre qui référencerait toutes les pages d’un ouvrage. (Intro0 page 1, Intro1 page 2 Intro2 page 3
"Comment lire ce livre 1" page 4 …)

Cette “table des matières” ne prévoit pas que la page5 "Comment lire ce livre2"
soit arrachée et remplacée par un surréaliste “Si vous ne savez pas lire, voir page 6”.
Il aurait fallu mettre à jour l’index qui référence une page qui n’est plus et omet une page qui y est.

[quote]ocate recherche dans un fichier qui recense tous les noms des fichiers. Nous appelons ce fichier que locate scrute “index” comme une “table des matières” d’un livre qui référencerait toutes les pages d’un ouvrage. (Intro0 page 1, Intro1 page 2 Intro2 page 3
“Comment lire ce livre 1” page 4 …)

Cette “table des matières” ne prévoit pas que la page5 “Comment lire ce livre2”
soit arrachée et remplacée par un surréaliste “Si vous ne savez pas lire, voir page 6”.
Il aurait fallu mettre à jour l’index qui référence une page qui n’est plus et omet une page qui y est.[/quote]

j’adooooooore ton explication etxeberrizahar ca me rappelle certains livre d’hacking sur la ram, octet et. :023 [“thecniques de hacking” pour ne pas le cité]

Merci, c’est très imagé comme explication :smiley:
Je viens de voir que mlocate est installé sur les machines et que le cron semble aussi en place car tous les fichiers dont présents.
Rien à faire donc, qu’à utiliser.
:006

Salut,

J’utilise Midnight Commander (mc ou sudo mc) :slightly_smiling:

Oui, il m’est aussi arrivé de faire des recherches par ce biais mais je veux essayer de rester “ligne de commande” quand je le peux.

En console, je trouve toujours tout avec find (même si cette commande est parfois complexe a utiliser…enfin pour moi :smiley: )

Re,

Je ne suis pas sûr que la méthode locate, qui oblige à mettre à jour un catalogue avant de commencer soit beaucoup plus performante :slightly_smiling:

Utiliser find c’est reprendre chaque recherche à zéro.
Utiliser locate c’est rechercher une fois par jour( semaine||mois|| an|| siècle si tu le veux, si tu es certain que des fichiers n’auront pas été supprimés, renommés, crées …).
De plus, mlocate a optimisé la mise à jour de sa base pour rendre l’opération moins lourde.

packages.debian.org/fr/squeeze/mlocate

[quote]
Trouver rapidement des fichiers sur le système de fichiers d’après leur nom

Mlocate est une nouvelle implementation de locate, un outil pour trouver des fichiers n’importe où dans le système de fichiers à partir de leur nom, en utilisant un motif fixe ou une expression régulière. À la différence d’autres outils comme find(1), locate utilise une base de données créée au préalable pour effectuer ses recherches, ce qui permet aux requêtes d’être exécutées beaucoup plus rapidement. Cette base de données est mise à jour périodiquement à l’aide de cron.

Plusieurs implémentations de locate existent : l’implémentation originale disponibles dans les utilitaires GNU findutils, slocate et mlocate. mlocate a plusieurs avantages :

  • il indexe tout le système de fichiers, mais les résultats d’une
    recherche incluront uniquement les fichiers auxquels l’utilisateur
    exécutant locate a le droit d’accès. Il réalise cela en mettant à jour
    la base de données en tant que superutilisateur (« root ») mais en
    la rendant inaccessible aux utilisateurs normaux qui ne peuvent y
    accéder que via l’utilitaire locate. slocate fonctionne de la même
    manière mais pas la version originale de locate.

  • plutôt que de relire l’ensemble du contenu de tous les répertoires
    chaque fois que la base de données est mise à jour, mlocate conserve
    des informations d’horodatage dans sa base de données de telle sorte
    qu’il puisse savoir si le contenu d’un répertoire a changé sans le
    relire. Cela rend les mises à jour plus rapides et sollicite moins le
    disque dur. Cette fonctionnalité est uniquement disponible dans
    mlocate.

L’installation de mlocate modifiera le binaire /usr/bin/locate pour pointer sur mlocate via le mécanisme des alternatives. Après l’installation, vous devriez exécuter /etc/cron.daily/mlocate manuellement pour créer la base de données, sinon mlocate ne fonctionnera pas avant que cron ne l’ait exécuté une première fois (puisque mlocate n’utilise pas le même fichier de base de données que le locate standard). Vous devriez aussi supprimer le paquet locate pour ne pas avoir deux base de données différente mises à jour régulièrement sur votre système. [/quote]

Salut,
Personnellement je pense que le choix entre find et locate dépend de l’usage et de la fréquence des recherches à faire.
Find recherche parmi l’ensemble des fichiers de proche en proche selon une chaîne de caractères ou une expression régulière.
Locate recherche dans une base de données qu’il convient de mettre régulièrement à jour et cette recherche se fait uniquement selon le nom.
Donc pour moi qui ne fait que rarement des recherches j’utilise find ce qui m’évite la mise à jour de la base de données que nécessite locate.

@ etxeberrizahar :
Oui, j’avais lu tout ça hier et c’est installé nativement maintenant : mlocate et les MAJ ‘cron daily’.
Il devient inutile de mettre à jour (updatedb) sauf si on recherche un fichier nouveau de < 24 heures d’existence.
Enfin, d’après ce que j’en ai compris.

salut

En principe on cherche dans / quand c’est root qui doit chercher en principe un fichier systeme sauf si un user a le droit d’ecrire ou il faut pas. Donc sa ne devrai pas être fréquand…

l’indexation par cron est pas très bon pour un disque ssd.
Et comme je cherche rarment un fichier dans / je place le chemin qui va bien sur le chemin de recherche
Et du coup j’utilise find (rarment) car je c’est ou je ranger mes données,sauf quand je fatigue :030 :laughing:

sinon perso je fait

# find / -iname montruc*
ou
$ find /home/user -iname montruc*

l’indexation devien casiment inutile voir pourrir les perf du disque,sa peux s’inverser si le disque est très lent comme ceux des portable.

Ne voulant blesser personne, j’ai vidé mon précédent message !!!

LeDub qui préfère find quand même