Newsgroup: it.comp.os.linux.iniziare
Titolo: sintassi di grep

Perché se scrivo
grep -r initFilter *
ottengo vari risultati, tra cui questo
libswscale/swscale.c:static inline int initFilter(int16_t **outFilter, int16_t **filterPos, int *outFilterSize, int xInc,
mentre se scrivo
grep -r initFilter *.c
non ottengo niente?
-- 
                     Dona i tuoi cicli di clock alla ricerca!
 
http://boinc.berkeley.edu/
                          --------------------
      "Preferisco essere infelice con te che infelice con altri."

 non ottengo niente?
Perchè non hai nessuna directory che si chiami qualcosa.c
-- 
           |Save our planet!
    Ciao   |Save wildlife!
   roberto |For your E-MAIL use ONLY recycled Bytes  !!
           |roberto poggi   
rpo...@softhome.net

 non ottengo niente?
Perchè grep funziona così e perchè tu non hai letto il man.
cfr: -d recurse
quello che vorresti fare te si fa con find + xargs + grep

 Perchè non hai nessuna directory che si chiami qualcosa.c
Ok, ma se volessi esaminare ricorsivamente solo i sorgenti .c e .h qual
è la sintassi corretta.
-- 
                     Dona i tuoi cicli di clock alla ricerca!
 
http://boinc.berkeley.edu/
                          --------------------
    Ordine dei Cappuccini: 5 tazze di caffelatte una dietro l'altra.
    		-- Da it.hobby.umorismo

 ?? la sintassi corretta.
qualcosa tipo
$ find directory/ -type f -regextype posix-extended -regex '.*\.(c|h)' -exec grep initFilter {} \;
-- 
Never try to teach a pig to sing.
It wastes your time and annoys the pig.

 -exec grep initFilter {} \;
se vuoi sapere quali file hanno matchato usando grep -exec serve dare
a grep l'opzione -H
                          grep -H initFilter
oppure, come qualcun altro ha scritto, usare xargs che ultrapiù non
inizializza quelle centinaia di processi
se i file hanno nomi buffi (con spazi etc) -exec ci pensa da se,
invece la pipe find | xargs necessita delle opzioni -print0 e -0 per
find e xargs rispettivamente
-- 
BLOWN UP BY THOUSANDS OF CORVETTES. SINKING. U-718.

è la sintassi corretta.
Prova anche questa con solo grep:
grep -r initFilter * | grep ".[c|h]:"
a meno che non perda troppo tempo a greppare tutti file
prima di filtrarteli.
-- 
Saluti, Dalet

 prima di filtrarteli.
 
Anche se impiega pochissimo tempo  non è molto intelligente

 -exec grep initFilter {} \;
Molto più semplice
find . -name '*.c' -o -name '*.h' -exec grep -H initfilter {} +
L'opzione -H si può omettere ma per sicurezza è meglio lasciarla.

Anche se impiega pochissimo tempo  non è molto intelligente
Perche'? il lavoro inutile lo fa lui, qual e' la
controindicazione? o dici per il pattern?
-- 
Saluti, Dalet



A parte che se nel percorso c'è una iso dvd, grep inizia a ravanare per 
mezzora il disco, e non è bello.
Poi, l'istruzione che hai dato non fa quello che ha chiesto l'op, visto 
che ti  matcha la riga
blablabla initFilter blablalba.ciccio 
nel file
pippo.unaestensionequalsiasi

Addì  sabato 15 gennaio 2011 13:29 Dalet scrisse:

Prima di tutto non capisco il pattern. il punto è il carattere jolly, deve 
essere preceduto dallo escape e poi devi mettere l'ancora, e devi 
mettere l'operatore di chiusura ed i due  punti, anche se messi da grep, causano dei bug sottili. Ma queste sono piccolezze.
Secondo la leggerezza con cui parli. "Tanto il lavoro sporco lo fa iul, il processore!" No. Come /forma/ /mentis/; fare le cose nel modo corretto 
fa evitare molti problemi di debugging. Questo è un caso banale, ci sono
molte scappatoie ma se ti abitui a usare le scappatoie poi ti sarà
impossibile affrontare il caso difficile.

poi ti sarà impossibile affrontare il caso difficile.
Si', verissimo! ariTHX.
-- 
Saluti, Dalet

pippo.unaestensionequalsiasi
Be', salvo complicazioni perche' non ho protetto, questo
che dici non lo matcha perche' mancano i due punti dopo c.
(da me per proteggere il punto son bastate le virgolette)
Cmq era un porcaio come ho riconosciuto anche con Mallin,
pero' era solo per un elenco, voglio dire: anche con errori
non avrebbe fatto danni, al piu' sarebbe stato d'aggiustare.
-- 
Saluti, Dalet