GNU/Linux >> Tutoriels Linux >  >> Linux

Utiliser un index pour accélérer grep ?

Vous pouvez copier votre base de code sur un disque RAM.


Indexation de texte intégral

Il existe des outils tels que recoll, swish-e et sphinx, mais vous devez vérifier s'ils peuvent prendre en charge le type de critères de recherche dont vous avez besoin.

Rappel

Recoll est un outil personnel de recherche plein texte pour Unix/Linux.

Swish-e

Swish-e est un système open source rapide, flexible et gratuit pour indexer des collections de pages Web ou d'autres fichiers.

Sphinx

Sphinx vous permet d'indexer par lots et de rechercher des données stockées dans une base de données SQL, un stockage NoSQL ou simplement des fichiers rapidement et facilement

grep

Je suis surpris que grep soit aussi lent que vous le décrivez, pouvez-vous réduire le nombre de fichiers recherchés ? Par exemple, lorsque je n'ai besoin de rechercher les fichiers source que pour un seul exécutable (parmi plusieurs dans un projet), j'alimente grep les noms à partir d'une commande qui répertorie les fichiers source de ce programme :

grep expression `sources myprogram`

sources est un programme spécifique à mon environnement de développement mais vous pouvez avoir (ou être capable de construire) quelque chose d'équivalent.

Je suppose que vous avez essayé des techniques évidentes telles que

find /foo/myproject -name "*.c" -exec fgrep -l searchtext

J'ai lu une suggestion selon laquelle le -P option du grep actuel peut accélérer considérablement les recherches.


Qu'en est-il de cscope, est-ce que cela correspond à vos chaussures ?

Permet de rechercher le code pour :

  • toutes les références à un symbole
  • définitions globales
  • fonctions appelées par une fonction
  • fonctions appelant une fonction
  • chaîne de texte
  • modèle d'expression régulière
  • un fichier
  • fichiers incluant un fichier

Linux
  1. Grep :Mémoire épuisée ?

  2. Placer `rm` dans la corbeille ?

  3. Comment trier les fichiers selon leurs autorisations à l'aide de Ls ?

  4. Comment renommer plusieurs fichiers à l'aide de Find ?

  5. Trouver le dernier élément d'une ligne à l'aide de Grep ?

Commande Grep sous Linux (Rechercher du texte dans des fichiers)

Comment effectuer une recherche de modèle dans les fichiers à l'aide de Grep

Comment renommer des fichiers en utilisant la ligne de commande sous Linux

Comment supprimer des lignes vides dans des fichiers à l'aide de Grep, Sed et Awk

Rechercher du texte dans des fichiers sous Linux à l'aide de grep

Transférer des fichiers à l'aide de WinSCP