Trying to find a source code file by its content using
-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
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
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!