De man locate :
To search for a file named exactly
NAME(not*NAME*),
uselocate -b '\NAME'
locate -b '\java'
-
-b- corresponde apenas o nome base aos padrões especificados.
Existem várias instalações de Java no meu sistema, algumas instaladas silenciosamente por IDEs, e eu queria descobrir onde elas estão. Então eu pensei em usar locate para encontrá-los. Minha primeira tentativa de
locate java
teve vários mil acessos encontrando .*java.* .
Existe uma maneira de restringir a localização para encontrar apenas arquivos com nome exato? Não caminho contendo Java. Não arquivos que contenham Java como parte de seu nome.
PS: Eu tive um problema semelhante antes, então ignore a parte Java e trate isso como um problema de encontrar arquivos. Poderia ser uma questão de encontrar todas as ocorrências de gcc .
Com a maioria das implementações de locate :
locate '*/java'
deve funcionar.
Quando o argumento não contém curingas, o argumento é tomado como uma string para pesquisar nos caminhos de arquivo.
Quando ele contém curingas, o curinga precisa corresponder aos caminhos completos. Então, aqui, qualquer caminho que termine em /java .
find pode ser uma maneira melhor de localizar arquivos nomeados java .
find . -type f -name *java*
Se você ainda quiser usar o locate, use locate -b ou use
locate java | grep java$