whereis(1) doesn't sound suitable to your purpose since it's no general purpose path name search tool.
Without a search index
As Gilles noted in his answer you can use
find(1) for this job but I want to make a small yet significant improvement1:
find [PATH...] -depth -path '*gmai*' -print # -delete
find [PATH...] goes through all files and subdirectories below each
PATH or the current working directories, if no path was given, and prints all matches (by default).
-path PATTERN matches full paths against
PATTERN using globbing if any, so
*gmai* matches all path names with an infix
-delete deletes all matched paths (and overrides the default action to print them).
find to match children before parents, i. e. directory entries before the parent directories themselves. It's necessary to delete children before their parents because in Unix' file system semantics only empty directories can be deleted.
-print prints all matched paths. Use this to check the result before the actual deletion. Comment in the
-delete command (by removing the
# in front of it) to actually delete them.
With a search index
If all the locations that you intend to delete appear in the
mlocate.db(5) search index you can use it for faster searches:
searches all (indexed) paths that start with
/your/parent/path/ and have an infix
gmai in their remainder. This command only lists search results.
To delete the results use:
locate -0 '/your/parent/path/*gmai*' | xargs -r -0 -- rm -rf --
| redirects the output of the left-side command to the input of the right-side command.
xargs collects "items" from its input, appends them to a given command and runs that command.
xargs not run the command if no input item occurs.
rm -rf removes files and directories recursively
locate to delimit matches by null-bytes and
xargs to accept null-separated input items. This avoids issues with path names that contain white-space and, more specifically, line break characters.
1 that he incorporated in his answer before the question was reopened and allowed me to answer.