como encontrar ocorrências de um arquivo usando o locate

3

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 .

    
por Martin 30.05.2017 / 14:04

3 respostas

3

De man locate :

To search for a file named exactly NAME (not *NAME*),
use locate -b '\NAME'

locate -b '\java'
  • -b - corresponde apenas o nome base aos padrões especificados.
por 30.05.2017 / 14:10
1

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 .

    
por 30.05.2017 / 15:28
-1

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$
    
por 30.05.2017 / 15:07

Tags