web-dev-qa-db-fra.com

Comment rechercher des chaînes dans des fichiers d'un dossier?

Existe-t-il un utilitaire permettant de rechercher une chaîne dans les fichiers ASCII afin d'éviter les recherches en ligne de commande?

Comment effectuer une recherche en ligne de commande, par exemple pour la chaîne "test" dans tous les fichiers du répertoire /var/x/?

94
Nuno

Vous pouvez utiliser searchmonkey. L'outil est disponible dans les référentiels, vous pouvez donc simplement

Sudo apt-get install searchmonkey

D'autre part, la recherche en ligne de commande avec grep est vraiment destinée à cela ...

Voici une capture d'écran de searchmonkey

enter image description here

75
alci

Je suppose que votre première question concerne une alternative graphique à la commande grep. Je ne peux pas vous aider avec ça, je trouve toujours la ligne de commande très efficace.

Quant à la ligne de commande, essayez

grep "test" /var/x/*

Si vous souhaitez effectuer une recherche récursive (c’est-à-dire non seulement dans /var/x/, mais également dans ses sous-répertoires), effectuez une recherche.

grep -R "test" /var/x/

Pour éviter de greper les fichiers que grep pense être binaires, utilisez l'option -I:

grep -I "test" /var/x/

Si grep pense qu'un fichier est binaire (basé sur les premiers octets du fichier), il supposera qu'il ne correspond pas au lieu de parcourir l'intégralité du fichier.

151
January

Vous pouvez utiliser regexxer c'est un excellent outil de recherche/remplacement d'interface graphique pour les expressions régulières.

vous pouvez télécharger par:

Sudo apt-get install regexxer

enter image description here

18
user61928

Vous pouvez utiliser la commande grep depuis le terminal:

grep -r string *

Cette commande trouvera toutes les occurrences de "chaîne" dans tous les fichiers du répertoire courant (ou des sous-répertoires).

Pour les fichiers cachés, vous pouvez utiliser:

grep -r string ..

6
inquisitive

Essayez Recoll, la meilleure interface graphique que j'ai jamais utilisée. Pour installer récoll dans toutes les versions actuellement prises en charge d'Ubuntu, ouvrez le terminal et tapez:

Sudo apt install recoll

Il faut un peu de temps pour indexer d’abord les fichiers (vous pouvez définir le chemin de la liste noire, ses extensions ou mime).

6
user244846

Malheureusement, grep effectue très mal la recherche dans les fichiers Word (.doc), mais vous pouvez rediriger la sortie de catdoc vers grep. Je ne suis pas un programmeur mais ce petit script me convient parfaitement:

#!/bin/bash
export GREP_OPTIONS='--color=auto'
echo -e "\n
Welcome to scandocs. This will search .doc (NOT .docx) files in this directory for a given string. \n
Type in the text string you want to find... \n"
read response
find . -name "*.doc" | 
while read i; do catdoc "$i" | 
grep -iH --label="$i" "$response"; done

Toutes les améliorations et suggestions sont les bienvenues!

3
Ralph

Je viens de publier un outil simple pour faire le travail. Conçu principalement pour les développeurs de logiciels, il présente la caractéristique (unique?) D’ouvrir plusieurs fichiers dans la même fenêtre. Il présente les résultats dans le navigateur en utilisant Ace Editor (recommandé!) Ou html textarea. C'est un outil basé sur Java et qui s'exécute donc aussi bien sous Windows que sous Linux.

vérifiez-le!

https://sourceforge.net/projects/queacetu.gastona.p/

2