Newsgroup: it.comp.os.linux.iniziare
Titolo: grep: aiuto

Ciao,
sto cercando di fare una ricerca di un pattern all'interno di file
*.c per cui ho impostato: grep -r <pattern> *.c
Il mio problema e' questo: nella directory di partenza non ci sono file
ma solo directory. Da questo punto di partenza il risultato di grep e'
grep: *.c: No such file or directory
Ovviamente invece se mi sposto in una directory contenente i file .c il
risultato e' positivo per quei file che contengono il pattern richiesto.
Siccome non ho una grossa esperienza di Linux mi potete aiutare?
Grazie
Lorenzo
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 Siccome non ho una grossa esperienza di Linux mi potete aiutare?
kfind non funziona?
--------------------------------
Inviato via 
http://usenet.libero.it

 
grep cerca nei file che tu gli chiedi. ne più ne meno :-)
grep -r <pattern> *.c    cerca in questa directory
grep <pattern> */*.c     cerca nel livello di directory sottostante
grep <pattern> */*/*.c   cerca nel livello di directory sottostante al
precedente
...
grep -r <pattern> *.c 
o
rgrep <pattern> *.c 
cercano nella directory e in tutti i livelli sottostanti
vedi "info grep" o "info rgrep" per maggiori dettagli
Le pagine man di grep non sono aggiornate.
ciao, andrea

 cercano nella directory e in tutti i livelli sottostanti
La directory principale contiene solo nomi di altre directory, le quali
a loro volta possono contenere altre directory o file .c. Il fatto e'
che non riesco a dirgli, in pratica, "anche se in questa directory non
trovi i file .c prosegui ugualmente con la ricerca nei livelli
sottostanti, senza che io a priori di dia le informazioni sui livelli
ai quali scendere".
Essendo nulla la prima ricerca, in quanto non ci sono file, grep si
ferma.


> kfind non funziona?
Ho dimentiticato di dire che sto usando Cygwin.
Grazie
.Lor.


 *.c per cui ho impostato: grep -r <pattern> *.c
# find <rootdir> -name '*.c' -exec grep <pattern> '{}' ';'
-- 
Software is like sex: it's better when it's free -- [Linus Torvalds]
Fabio Marini - RHCT 608002292700226
To reply: news [at] mamakin1976 [dot] plus [dot] com

 # find <rootdir> -name '*.c' -exec grep <pattern> '{}' ';'
Grazie, finalmente sono riuscito ad ottenere qualche risultato.
Per inciso '{}' e ';' a che cosa servono?
Ancora grazie
.Lor.


 Per inciso '{}' e ';' a che cosa servono?
man find:
        -exec command ;
               Execute  command;  true  if 0 status is returned.  All following
               arguments to find are taken to be arguments to the command until
               an  argument  consisting of `;' is encountered.  The string `{}'
               is replaced by the current file name being processed  everywhere
               it occurs in the arguments to the command, not just in arguments
               where it is alone, as in some versions of find.  Both  of  these
               constructions might need to be escaped (with a `\') or quoted to
               protect them from expansion by the shell.  The command  is  exe-
               cuted in the starting directory.


 man find:
Danke


 > Le pagine man di grep non sono aggiornate.
Visto che ho sbagliato, per questa volta te lo leggo io. 
Però non ti ci abituare :=)
$ info grep 
......
 2. How do I search directories recursively?
          grep -r 'hello' /home/gigi
     searches for `hello' in all files under the directory
     `/home/gigi'.  For more control of which files are searched, use
     `find', `grep' and `xargs'.  For example, the following command
     searches only C files:
          find /home/gigi -name '*.c' -print | xargs grep 'hello' /dev/null
     This differs from the command:
          grep -r 'hello' *.c
     which merely looks for `hello' in all files in the current
     directory whose names end in `.c'.  Here the `-r' is probably
     unnecessary, as recursion occurs only in the unlikely event that
     one of `.c' files is a directory.
....
$ man rgrep
NAME
       rgrep - a recursive, highlighting grep program
....
EXAMPLES
       Look  in  all files with a 'c' extension in current direc­
       tory and all its subdirectories  looking  for  matches  of
       'int  ' at the beginning of a line, printing the line con­
       taining the match with its line number: (two methods)
       rgrep -n -R '*.c' '^int ' .
       rgrep -n -x c '^int ' .
.....
ciao, Andrea