Come cercare le stringhe all'interno dei file in una cartella?


98

Esiste un'utilità per effettuare ricerche di una stringa all'interno dei file ASCII per evitare ricerche dalla riga di comando?

Come effettuare una ricerca da riga di comando, ad esempio per la stringa "test" all'interno di tutti i file nella directory /var/x/?


15
Intendi davvero senza usare la riga di comando? Perché lo strumento migliore rimane grep ...
alci,

Sulla CLI Silver Searcher probabilmente fa un lavoro migliore.
Pablo A

Risposte:


78

Puoi usare searchmonkey. Lo strumento è disponibile nei repository, quindi puoi semplicemente

sudo apt-get install searchmonkey

D'altra parte, la ricerca da riga di comando con grep è davvero pensata per questo ...

Ecco uno screenshot da searchmonkey

inserisci qui la descrizione dell'immagine


si è schiantato a causa di un carico eccessivo :(
WiredIn

1
ho avuto problemi con searchmonkey. Non è degno di fiducia nel senso che lascia scivolare un sacco di eventi
tony gil

come posso eseguire "searchmonkey" dalla GUI? dopo l'installazione usando la riga di comando, preferirei non usare la riga di comando
Echeban

153

Presumo che la tua prima domanda riguardi un'alternativa alla GUI del grepcomando. Non posso aiutarti, trovo sempre molto efficace la riga di comando.

Per quanto riguarda la riga di comando, provare

grep "test" /var/x/*

Se vuoi cercare ricorsivamente (cioè non solo in /var/x/, ma anche nelle sue sottodirectory), fallo

grep -R "test" /var/x/

Per evitare il grepping dei file che grep ritiene binari, usa l' -Iopzione:

grep -I "test" /var/x/

Se grep pensa che un file sia binario (basato sui primi byte del file), supporrà che non corrisponda invece di passare attraverso l'intero file.


1
Funzionerà se la cartella contiene alcuni file non ASCII?
Anwar,

1
Beh, grep cercherà anche cercare la stringa in un file binario, e segnalarlo se corrisponde a:Binary file file.jpg matches
Gennaio

1
@Gennaio Quando un file binario viene letto come testo, spesso ha "righe" estremamente lunghe (perché un carattere o una sequenza di caratteri che verrebbero interpretati per designare la fine di una riga potrebbe non apparire per molto tempo o mai). A seconda del modo in cui viene implementata un'utilità di ricerca di testo, ciò potrebbe causare problemi di prestazioni se ogni "riga" viene letta completamente in memoria e quindi controllata per vedere se corrisponde alla stringa di ricerca (che è un modo ragionevole per grepessere codificato, anche se I non so se Ubuntu grepè scritto in quel modo).
Eliah Kagan,

1
"grep -i" per la ricerca senza distinzione tra maiuscole e minuscole
Czarek Tomczak,

3
Dovrebbe esserci un *dopo la barra finale nel percorso o grep non sembra fare alcun lavoro nel 14.04
DavidScherer

20

Puoi usare regexxer , è un ottimo strumento di ricerca / sostituzione della GUI per le espressioni regolari.

puoi scaricare da:

sudo apt-get install regexxer

inserisci qui la descrizione dell'immagine


è super veloce, ma i problemi che ho con questa applicazione sono: 1. non ha una modalità di sola lettura, quindi non sostituisco o elimino per errore nulla 2. mostra il testo, ma non passerà allo specifico linea a cui il motivo è stato abbinato. (Ho fatto scorrere circa 2000 righe di codice per trovare quello che cercavo dopo aver cambiato il colore in rosso vivo!)
Mehrad Mahmoudian,

6

Prova Recoll, la migliore interfaccia grafica che abbia mai usato. Per installare il richiamo in tutte le versioni attualmente supportate di Ubuntu, apri il terminale e digita:

sudo apt install recoll

Occorre prima un po 'di tempo per indicizzare i file (è possibile definire il percorso della lista nera o le estensioni o il mime).


Posso confermare che Recoll è completamente un altro mondo rispetto a gnome-search-toolo search-monkey. Utilizza Xapian, quindi è in grado di ispezionare e indicizzare documenti di parole (sia .doc che .docx), file pdf, cartelle di posta, ecc.
Avio

Uh, è disponibile tramite deb packaging ( sudo apt install recoll) e fa il suo lavoro dove fallisce anche grep, ad esempio con documenti .docx compressi con compressione pkzip.
Avio,

nota che recollrichiede prima di costruire l'indice.
Yrogirg,

5

È possibile utilizzare il grepcomando dal terminale:

grep -r string *

Questo comando troverà tutte le occorrenze di "stringa" in tutti i file nella directory corrente (o nelle sottodirectory).

Per i file nascosti, puoi utilizzare:

grep -r string ..


2

Sfortunatamente grep fa un pessimo lavoro di ricerca all'interno dei file Word (.doc), ma è possibile reindirizzare l'output di catdoc in grep. Non sono un programmatore ma questo piccolo script funziona bene per me:

#!/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

Tutti i miglioramenti e i suggerimenti sono benvenuti!


1
Questa domanda riguardava applicazioni grafiche e file di testo semplice. Io non sono sicuro di cosa grepe .dochanno a che fare con la domanda.
Andrea Corbellini,

Sembra OK, vedi la risposta dettagliata di gennaio su grep.
aquaherd,

2

Ho appena rilasciato un semplice strumento per fare il lavoro. Pensato principalmente per gli sviluppatori di software, ha la caratteristica (unica?) Di aprire diversi file nella stessa finestra. Presenta i risultati nel browser usando l'editor Ace (consigliato!) O textarea html. È uno strumento basato su Java, quindi funziona sia su Windows che su Linux.

controlla!

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


1

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

Puoi usare mate-search-tool, che è la stessa cosa gnome-search-toolrimossa. Ho avuto problemi con searchmonkey, mancavano alcuni risultati ed era lento, non lo consiglio.

Per installare mate-search-tool:

sudo apt install mate-utils
mate-search-tool

0

È possibile utilizzare l' opzione Testo sublime Find in Files dal Findmenu per cercare stringhe all'interno di file da una cartella.

Per installare Sublime Text 3

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

Puoi anche seguire questa domanda per altri modi possibili di installare Sublime su Ubuntu .

Per cercare una stringa in tutti i file da una cartella in Sublime Text puoi seguire questa domanda per avere risposte più chiare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.