Se você executar locate *.cpp no shell, o shell tentará primeiro expandir *.cpp para todos os nomes de arquivos correspondentes a esse padrão e, em seguida, chamar locate com esses nomes de arquivos como argumento.
Portanto, se houver arquivos .cpp em seu diretório atual, locate nunca verá o *.cpp , mas apenas os nomes dos arquivos para os quais ele expande.
Use
locate '*.cpp'
se você não quiser que o shell tente expandir o padrão.