Cerca ricorsivamente una stringa nella directory corrente


15

Voglio cercare ricorsivamente tutti i file dalla directory in cui mi trovo per una stringa particolare.

Provai

grep -r -i my_string

e l'ho provato in una cartella di prova con due piccoli file ma non ha trovato la stringa.

Inoltre, esiste un modo speciale di definire "contiene" anziché abbinare l'intera parola?


3
Prova grep -r -o -i "your_string" *(con "virgolette).
pl1nk

sto ricevendo alcuni messaggi di autorizzazione negati, ignora solo quei file ma continua a controllare il resto?
David,

Bene, questi file vengono ignorati.
Pl1nk,

Risposte:


27

Stai cercando un nome file o una parola all'interno di un file? grep cerca all'interno dei file, che sembra essere quello che vuoi.

grep usa espressioni regolari - in effetti, questo è ciò che la parte "re" rappresenta. Quindi, non utilizza i normali caratteri jolly bash; cioè, abc*non troverebbe le parole che iniziano con abc, troverebbero le parole che iniziano con ab, quindi zero o più c seguono. Ma sì, se semplicemente gli dai uno schema, lo troverà ovunque, senza la conoscenza di intere parole. Se si desidera trovare parole intere, è necessario creare un'espressione regolare per dirlo.

Ma, come la maggior parte dei comandi, devi mettere i nomi dei file alla fine del comando, quindi il tuo esempio rimarrà lì e aspetterà il nome del file.

Come diceva @plink, usare

grep -r -o -i "your_string" *

(o *.*, o altro filespec). Gli errori possono essere ignorati. Se si verificano molti errori, è possibile aggiungere 2>/dev/nullalla fine, che reindirizzerà stderr a un dispositivo null.


6
Per chi è curioso: -r significa ricorsivo (cioè appare nella cartella corrente e TUTTE le cartelle nella cartella corrente E tutte le cartelle in quella cartella ..... fino all'infinito), -o significa che non mostra l'intera riga, e -i è ignora il caso.
BKSpurgeon,

@johnsnails Il backtick non è necessario. È più probabile che si verifichi un errore di formattazione su Stack Exchange durante la pubblicazione come blocco di codice incorporato.
tom_mai78101

Sì, ha senso.
johnsnails
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.