FreeBSD 9: Como localizar um nome de arquivo exato?

8

Tentando usar o comando locate para encontrar uma correspondência exata para o padrão fornecido. No entanto, ele mostra todos os arquivos correspondentes ..

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

Mas isso me dá todas as correspondências contendo 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
    
por Alex G 27.09.2012 / 15:24

3 respostas

8

Se você olhar para 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 de expressão regular a locate :

locate -r /node$

O / garante que node esteja no início do nome do arquivo. O $ garante que node esteja no final do nome do arquivo. Isso fornecerá apenas os arquivos correspondentes ao nome exato do arquivo.

Se você deseja fazer uma pesquisa sem distinção entre maiúsculas e minúsculas (corresponde a Node , NODE , nOdE , etc), adicione -i :

locate -i -r /node$

Se o locate não suportar o regexp, você pode usar o grep (como mencionado pelo Iracicot):

locate node | grep /node$
locate -i node | grep -i /node$
    
por 11.12.2014 / 09:42
6

Você pode usar o grep com o locate

server2# locate node | grep node$

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

    
por 27.09.2012 / 15:31
0

Desative o globo implícito de locate adicionando seu próprio globo que corresponda a todos os diretórios:

locate */node

Da página do manual:

If any PATTERN contains no globbing characters, locate behaves as if the pattern were *PATTERN*

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

    
por 19.08.2017 / 19:52