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

98

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

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

Nuno
la source
15
Vous voulez vraiment dire sans utiliser la ligne de commande? Parce que le meilleur outil pour cela reste grep ...
alci
Sur la CLI, Silver Searcher fait probablement un meilleur travail.
Pablo Un

Réponses:

78

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

entrez la description de l'image ici

alci
la source
s'est écrasé à cause d'une charge
excessive
1
J'ai eu des problèmes avec searchmonkey. Il n'est pas digne de confiance en ce sens qu'il laisse passer de nombreuses occurrences
tony gil
Comment puis-je lancer "searchmonkey" à partir de l'interface graphique? après avoir installé en utilisant la ligne de commande, je préfère ne pas utiliser la ligne de commande
Echeban
153

Je suppose que votre première question concerne une alternative graphique à la grepcommande. 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 aussi dans leurs sous-répertoires), ne

grep -R "test" /var/x/

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

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.

janvier
la source
1
Cela fonctionnera-t-il si le dossier contient des fichiers non-ASCII?
Anwar
1
Eh bien, grep essaiera également rechercher la chaîne dans un fichier binaire, et signaler si elle correspond à :Binary file file.jpg matches
Janvier
1
@January Lorsqu'un fichier binaire est lu sous forme de texte, il comporte souvent des "lignes" extrêmement longues (car un caractère ou une séquence de caractères interprétée pour désigner la fin d'une ligne peut ne pas apparaître longtemps ou très longtemps). En fonction de la manière dont un utilitaire de recherche de texte est implémenté, cela peut entraîner des problèmes de performances si chaque "ligne" est entièrement lue en mémoire, puis vérifiée pour qu'elle corresponde bien à la chaîne de recherche (ce qui constitue un moyen raisonnable grepde coder, bien que je Je ne sais pas si Ubuntu grepest écrit de cette façon).
Eliah Kagan
1
"grep -i" pour la recherche insensible à la casse
Czarek Tomczak
3
Il devrait y avoir un *après la barre oblique finale dans le chemin ou grep ne semble pas faire aucun travail 14.04
DavidScherer
20

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

entrez la description de l'image ici

Seth
la source
c'est super rapide, mais les problèmes que j'ai avec cette application sont: 1. il n'a pas de mode lecture seule, donc je ne remplace ni ne supprime accidentellement quoi que ce soit 2. il montre le texte, mais il ne passera pas au spécifique ligne que le motif a correspondu. (J'ai fait défiler environ 2000 lignes de code pour trouver ce que j'étais après avoir changé la couleur en rouge vif!)
Mehrad Mahmoudian
6

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).

utilisateur244846
la source
Je peux confirmer que Recoll est complètement un autre monde en ce qui concerne gnome-search-toolou search-monkey. Il utilise Xapian, il est donc capable d'inspecter et d'indexer des documents Word (les fichiers .doc et .docx), des fichiers PDF, des dossiers de courrier, etc.
Avio
Euh, il est disponible via deb packaging ( sudo apt install recoll) et cela fonctionne même lorsque grep échoue, par exemple avec des documents .docx compressés avec la compression pkzip.
Avio
notez que la recollconstruction d'un index est nécessaire en premier.
Yrogirg
5

Vous pouvez utiliser la grepcommande du 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 ..

curieux
la source
2

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!

Ralph
la source
1
Cette question portait sur les applications graphiques et les fichiers de texte brut. Je ne suis pas sûr de ce que grepet .docà faire avec la question.
Andrea Corbellini
Semble OK, voir la réponse détaillée de janvier à propos de grep.
aquaherd
2

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, il tourne donc aussi bien sous Windows que sous Windows.

Vérifiez-le!

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

Alejadro Xalabarder
la source
1

par https://askubuntu.com/a/1141367/47073

Vous pouvez utiliser mate-search-toolce qui est la même chose que gnome-search-toolcelle qui a été supprimée. J'ai eu des problèmes avec searchmonkey, il manquait quelques résultats et était lent, ne le recommande pas.

Pour installer mate-search-tool:

sudo apt install mate-utils
mate-search-tool
Yroggir
la source
0

Vous pouvez utiliser l' option Texte sublime Find in Files du Findmenu pour rechercher des chaînes dans des fichiers d'un dossier.

Pour installer Sublime Text 3

sudo add-apt-repository ppa:webupd8team/sublime-text-3
sudo apt-get update
sudo apt-get install sublime-text-installer

Vous pouvez également suivre cette question pour connaître les autres moyens d’installer Sublime sur Ubuntu .

Pour rechercher dans tous les fichiers une chaîne d'un dossier dans Sublime Text, vous pouvez suivre cette question pour obtenir des réponses plus claires.

MAK Ripon
la source