Je me demande s'il existe un moyen d'augmenter la find
vitesse dans le terminal, cela n'a pas de sens que l'utilisation d'Internet Google pour rechercher ait une meilleure vitesse que de faire une recherche locale de chaînes ou simplement des noms de fichiers.
Je me demande s'il existe un moyen d'avoir une base d'indexation locale, une fois construite, à l'avenir, la commande find pourrait être super rapide.
Ou d'autres suggestions?
Merci!
Réponses:
Essayez d'utiliser
locate
, il devrait faire ce que vous voulez.la source
locate
vient (généralementslocate
), et utiliserupdatedb
pour reconstruire la base de données. :-)Cela dépend beaucoup de votre critère de recherche.
Si vous recherchez des noms de fichiers ou des modèles de noms de fichiers, la localisation est beaucoup plus rapide, mais ne convient pas aux fichiers fraîchement générés, car l'index utilisé n'est normalement mis à jour qu'une fois par jour. Mais si vous pouvez l'utiliser, c'est super rapide.
Mais avec find, vous pouvez rechercher la taille du fichier, l'âge du fichier et d'autres choses, qui ne sont pas consultables par Locate.
Si vous savez où chercher, vous pouvez utiliser le chemin pour délimiter l'étendue de la recherche:
rechercherait uniquement des fichiers de 2 à 10 M, âgés de 1 an maximum dans / certains / chemin.
Les programmes, disponibles dans le chemin peuvent être recherchés par quels fichiers d'aide, de lib et de configuration avec whereis. Exemples:
la source
Utilisation
locate
La raison en est qu'il
locate
utilise une base de données de tous les répertoires et fichiers existants qui ont déjà été construits comme vous l'aviez imaginé!http://linux.about.com/od/commands/l/blcmdl5_locatedb.htm
À un intervalle défini (et modifiable), un travail s'exécute analyse le système de fichiers, puis crée une base de données avec lui. C'est alors cette base de données (locatedb), avec ses index appropriés, contre laquelle la
locate
commande va au lieu de parcourir votre disque dur à ce stade.L'avantage est donc qu'il est très rapide par rapport à une analyse de disque dur. L'inconvénient est que la base de données de localisation (locatedb) n'est pas «active» et ne peut donc être utilisée que pour les fichiers qui existaient «au moment de» la dernière analyse.
Pour mettre à jour locatedb maintenant exécutez
updatedb
(ousudo updatedb
si nécessaire)btw je viens de courir
sudo updatedb
localement et cela a pris 3 1/2 secondes! J'ai 31 000 fichiers.la source
Comme d'autres l'ont souligné, la localisation peut être un meilleur outil pour un chercheur plus simple.
Cependant, pour les recherches plus complexes, vous êtes probablement coincé avec find.
Une façon d'accélérer la recherche consiste à restreindre le répertoire dans lequel se trouvent vos fichiers au lieu de rechercher tout le répertoire racine.
la source
pour une seule opération de recherche; Je n'ai trouvé aucune accélération; sauf si vous essayez d'affiner la recherche à l'aide des
find
options.Pourtant; si vous souhaitez effectuer plusieurs
find
opérations sur le même ensemble de fichiers ; J'ai obtenu une accélération significative en remplissant un fichier temporaire avec tous les noms de fichiers et en l'utilisantgrep
. Bien entendu, cela ne prend pas en compte les fichiers ajoutés ou supprimés.la source