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$