FreeBSD 9: Como localizar um nome de arquivo exato?


10

Tentando usar o locatecomando para encontrar uma correspondência exata para o padrão fornecido. No entanto, resulta mostrando todos os arquivos correspondentes.

Por exemplo: eu quero encontrar um binário chamado: node

Mas ele fornece 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

Respostas:


10

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 -rpara fornecer um padrão regexp para locate:

locate -r /node$

A /garantia nodeestá no início do nome do arquivo. A $garantia nodeestá no final do nome do arquivo. Isso fornecerá apenas os arquivos correspondentes ao nome exato do arquivo.

Se você quiser fazer uma pesquisa de maiúsculas e minúsculas (partidas Node, NODE, nOdE, etc), adicione -i:

locate -i -r /node$

Se o localizador não suportar regexp, você poderá usar o grep (conforme mencionado pelo Iracicot):

locate node | grep /node$
locate -i node | grep -i /node$

Como alternativa, você pode usar a -bopção para corresponder apenas ao nome da base:locate -br node$
Sarke

6

Você pode usar grep com localize

server2# locate node | grep node$

O sinal $ dirá ao grep para olhar o final da string.


11
Resultado é o mesmo. Apresenta diferentes correspondências, terminando com o nó ... / usr / ports / www / p5-WebService-Linode. Eu acho que deveria ser / nó $?
Alex G

Sim, você pode tentar isso também (mas não tenho certeza se o caractere / deve ser escapado ou não). Você já tentou localizar -b?
Lracicot 27/09/12

0

Desabilite locateo globo implícito adicionando seu próprio globo que corresponda a todos os diretórios:

locate */node

Na página do manual:

Se algum PATTERNnão contiver caracteres brilhantes, localize-se como se o padrão fosse*PATTERN*

Essa sintaxe corresponderá a um nome completo de arquivo ou diretório em qualquer lugar, inclusive na raiz.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.