Tentando usar locate
o comando para encontrar uma correspondência exata para o padrão fornecido. No entanto, resulta mostrando todos os arquivos correspondentes.
Por exemplo: quero encontrar um binário chamado:nó
Mas isso me dá todas as correspondências que contêm esta palavra:
server2# locate node
/usr/share/man/man9/getnewvnode.9.gz
/usr/share/man/man9/ieee80211_amrr_node_init.9.gz
/usr/share/man/man9/ieee80211_dump_node.9.gz
/usr/share/man/man9/ieee80211_dump_nodes.9.gz
/usr/share/man/man9/ieee80211_find_rxnode.9.gz
/usr/share/man/man9/ieee80211_find_rxnode_withkey.9.gz
/usr/share/man/man9/ieee80211_free_node.9.gz
Responder1
Se você olhar locate --help
, poderá encontrar:
-r, --regexp REGEXP search for basic regexp REGEXP instead of patterns
--regex patterns are extended regexps
Você pode usar -r
para fornecer um padrão regexp para locate
:
locate -r /node$
A /
garantia node
está no início do nome do arquivo. A $
garantia node
está no final do nome do arquivo. Isto lhe daráapenasos arquivos que correspondem ao nome exato do arquivo.
Se você quiser fazer uma pesquisa sem distinção entre maiúsculas e minúsculas (correspondências Node
, NODE
, nOdE
, etc), adicione -i
:
locate -i -r /node$
Se o local não suportar regexp, você poderá usar grep (conforme mencionado por Iracicot):
locate node | grep /node$
locate -i node | grep -i /node$
Responder2
Você pode usar grep com localizar
server2# locate node | grep node$
O sinal $ dirá ao grep para olhar o final da string.
Responder3
Desative locate
o glob implícito adicionando seu próprio glob que corresponda a todos os diretórios:
locate */node
Na página de manual:
Se any
PATTERN
não contiver caracteres globais, o local se comportará como se o padrão fosse*PATTERN*
Esta sintaxe corresponderá a um nome completo de arquivo ou diretório em qualquer lugar, inclusive na raiz.