Re: Using grep to search a repository

2008-11-11 Thread Frédéric Perrin
Le Mardi 11 à 19:36, Mel a écrit :
 On Tuesday 11 November 2008 19:17:28 Aggelidis Nikos wrote:
 Hi to all the list,

 i have a project with a lot of bash scripts in a folder hierarchy.I
 haven't wrote the project myself so many times i have to search for
 the definition of a function. For this purpose i decided to use grep
 {recursively}.
 The problem is that the project is an svn repository... so grep
 returns results from .svn and it is really messes up the outcome of
 grep. I tried bypassing the problem using the `--exclude=file_pattern'
 but since its use is for files not directories it doesn't work So
 the questions are:

 1) Can i bypass certain directories{i.e. '.svn' or 'log/'}, using
 grep? {or a combination of tools + grep}

 man find(1), specifically -path and -exec arguments. Example:

 find . -type f \( \! -path '*/.svn/*' -a \! -path '*/log/*' \) \
   -exec grep foo {} +

FWIW, when doing a similar search, the command built by emacs is (a
longer version of) the following :

find . \( -path \*/.svn -o -path \*/log \) -prune -o -type f \( -name
\*.sh\* \) -exec grep -i -nH -e pattern {} /dev/null \;

Isn't -path .svn -prune more efficient than ! -path .svn? I mean,
with the second one, won't find also descend into .svn folders, only to
find that all files have a path containing .svn?

-- 
Fred
___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: Using grep to search a repository

2008-11-11 Thread Mel
On Tuesday 11 November 2008 19:17:28 Aggelidis Nikos wrote:
 Hi to all the list,

 i have a project with a lot of bash scripts in a folder hierarchy.I
 haven't wrote the project myself so many times i have to search for
 the definition of a function. For this purpose i decided to use grep
 {recursively}.
 The problem is that the project is an svn repository... so grep
 returns results from .svn and it is really messes up the outcome of
 grep. I tried bypassing the problem using the `--exclude=file_pattern'
 but since its use is for files not directories it doesn't work So
 the questions are:

 1) Can i bypass certain directories{i.e. '.svn' or 'log/'}, using
 grep? {or a combination of tools + grep}

man find(1), specifically -path and -exec arguments. Example:

find . -type f \( \! -path '*/.svn/*' -a \! -path '*/log/*' \) \
-exec grep foo {} +

-- 
Mel

Problem with today's modular software: they start with the modules
and never get to the software part.
___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: Using grep to search a repository

2008-11-11 Thread Mel
On Tuesday 11 November 2008 20:56:41 Frédéric Perrin wrote:
 Le Mardi 11 à 19:36, Mel a écrit :
  On Tuesday 11 November 2008 19:17:28 Aggelidis Nikos wrote:
  Hi to all the list,
 
  i have a project with a lot of bash scripts in a folder hierarchy.I
  haven't wrote the project myself so many times i have to search for
  the definition of a function. For this purpose i decided to use grep
  {recursively}.
  The problem is that the project is an svn repository... so grep
  returns results from .svn and it is really messes up the outcome of
  grep. I tried bypassing the problem using the `--exclude=file_pattern'
  but since its use is for files not directories it doesn't work So
  the questions are:
 
  1) Can i bypass certain directories{i.e. '.svn' or 'log/'}, using
  grep? {or a combination of tools + grep}
 
  man find(1), specifically -path and -exec arguments. Example:
 
  find . -type f \( \! -path '*/.svn/*' -a \! -path '*/log/*' \) \
  -exec grep foo {} +

 FWIW, when doing a similar search, the command built by emacs is (a
 longer version of) the following :

 find . \( -path \*/.svn -o -path \*/log \) -prune -o -type f \( -name
 \*.sh\* \) -exec grep -i -nH -e pattern {} /dev/null \;

 Isn't -path .svn -prune more efficient than ! -path .svn? I mean,
 with the second one, won't find also descend into .svn folders, only to
 find that all files have a path containing .svn?

Yes, you are correct. It's merely habit that I use ! -path vs -prune.

Tip:
The microseconds you win by using prune are insignificant to the minutes you 
add by ending with a semicolon, rather then a + sign.
With a semi-colon, a fork is done for each positive match. With a plus sign 
matches are bundled till the max command length is met.

-- 
Mel

Problem with today's modular software: they start with the modules
and never get to the software part.
___
freebsd-questions@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to [EMAIL PROTECTED]