Trying to find a source code file by its content using find
and -exec grep
, can some times result in getting results from the repository .git
folders as well.
This behavior not only does it provide results you do not need but it also makes your search slower.
Below, we propose a couple of solutions on how to make a more efficient search.
Example 1: Ignore all .git folders no matter where they are in the search path
For find
to ignore all .git
folders, even if they appear on the first level of directories or any in-between until the last one, add -not -path '*/\.git*'
to your command as in the example below.
This parameter will instruct find
to filter out any file that has anywhere in its path the folder .git
. This is very helpful in case a project has dependencies in other projects (repositories) that are part of the internal structure.
find . -type f -not -path '*/\.git/*';
Note, if you are using svn
use:
find . -type f -not -path '*/\.svn/*';
Example 2: Ignore all hidden files and folders
To ignore all hidden files and folders from your find
results add -not -path '*/\.*'
to your command.
find . -not -path '*/\.*';
This parameter instructs find
to ignore any file that has anywhere in its path the string /.
which is any hidden file or folder in the search path!