Re: Using grep to search a repository
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
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
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]