Pagina 1 di 1

Cercare su più file

Inviato: mar 1 nov 2005, 17:17
da napoleone1981
Ciao,
dovrei cercare una stringa su un certo numero di file (tutti all'interno di una directory). Come si fa??? Ho pensato a qualcosa tipo
cat * | grep stringa o qualcosa con find è meglio??

Inviato: mar 1 nov 2005, 17:23
da MAT

Codice: Seleziona tutto

grep stringa /percorso/di/ricerca/*

Inviato: mar 1 nov 2005, 18:09
da napoleone1981
Ok, ma così, se non sbaglio, mi cerca solo all'interno dei file presenti in quella directory, ed io vorrei cercare anche nei file presenti all'interno di tutte le sottodirectory e cos' via...
In altre parole vorrei trovare dove è presente la stringa WX_2.6 all'interno dei sorgenti di aMule, che sono divisi in tante directory....

Inviato: mar 1 nov 2005, 18:18
da absinthe
napoleone1981 ha scritto:Ok, ma così, se non sbaglio, mi cerca solo all'interno dei file presenti in quella directory, ed io vorrei cercare anche nei file presenti all'interno di tutte le sottodirectory e cos' via...
In altre parole vorrei trovare dove è presente la stringa WX_2.6 all'interno dei sorgenti di aMule, che sono divisi in tante directory....
prova :

#> find . | xargs grep "stringa_da_cercare" 2> /dev/null

forse va bene...

M.

PS: " . " deve essere la root directory della ricerca....

Inviato: mar 1 nov 2005, 18:28
da napoleone1981
sembra non andare all'interno delle sottodirectory...
o forse questo errore non lo scrive il codice di aMule ma qualcos'altro...
amule: /usr/lib/libwx_gtk2_adv-2.6.so.0: version `WX_2.6' not found (required by amule)
amule: /usr/lib/libwx_gtk2_core-2.6.so.0: version `WX_2.6' not found (required by amule)

Io ho fatto:

Codice: Seleziona tutto

find . | xargs grep -i *WX_2.6* 2> /dev/null
oppure

Codice: Seleziona tutto

find . | xargs grep -i "WX_2.6" 2> /dev/null
ma niente...

Inviato: mar 1 nov 2005, 19:47
da Paoletta
per fare quel che vuoi fare tu io faccio così:

Codice: Seleziona tutto

 find -true | xargs grep "stringa_da_cercare" 
P.S. ovviamente devi essere nella dir giusta; altrimenti la puoi passare come parametro a find

ciao!

Inviato: mar 1 nov 2005, 19:56
da useless

Codice: Seleziona tutto

find tuadir -exec grep -l {} \;

Inviato: mer 2 nov 2005, 12:03
da masalapianta
se avessi letto la man page di grep sapresti che esiste lo switch -r che rende la ricerca di grep ricorsiva per tutte le sottodirectory della directory in cui inizi la ricerca.

Inviato: mer 2 nov 2005, 12:11
da MAT
Bè, se tu scrivi
dovrei cercare una stringa su un certo numero di file (tutti all'interno di una directory)
la gente non se lo immagina che vuoi guardare anche nelle sotto-directory.
Allora basta usare l'opzione -R o -r o --recursive, che, come detto, una consultazione a man grep ti avrebbe rivelato senza troppi sforzi.

Inviato: mer 2 nov 2005, 18:07
da absinthe
masalapianta ha scritto:se avessi letto la man page di grep sapresti che esiste lo switch -r che rende la ricerca di grep ricorsiva per tutte le sottodirectory della directory in cui inizi la ricerca.
azz... il bello è che sono anche andato a vedere se esisteva una cosa del genere prima di rispondegli!!! quando si dice che uno c'ha lo sguardo da lince... eccolo quà:

Codice: Seleziona tutto

-R, -r, --recursive
              Read all files under each directory, recursively; this is equiv-
              alent to the -d recurse option.
M.

Inviato: mer 2 nov 2005, 20:58
da napoleone1981
Idem... altrimenti non postavo qua... visto che sapevo che grep cercava stringhe all'interno di files...