localizar parar de repetir quando um diretório contiver um nome

0

Às vezes, ao usar o locate, minha string de pesquisa corresponderá (acidentalmente ou intencionalmente) a uma parte de um diretório. Isso faz com que tudo abaixo desse ponto no diretório seja impresso. Por exemplo:

$ locate lib
/home/myname/libImWorkingOn/libImWorkingOn.so
/lib/
/lib/modules/
/lib/firmware/
.... etc

Isso rapidamente sai do controle e dificulta a pesquisa.

Existe uma maneira de evitar isso? Por exemplo, imprima:

$locate lib
/home/myname/libImWorkingOn/libImWorkingOn.so
/lib/

E nada mais?

Além disso, é possível procurar um diretório e localizar apenas os diretórios?

Por exemplo (procurando a pasta base do qemu)

Real:

$locate qemu
home/myname/qemu
home/myname/qemu/.svn
home/myname/qemu/.svn/.....
home/myname/qemu/Makefile
.....
usr/bin/qemu
.....

Desejado:

$locate (option) qemu
/home/myname/qemu
/usr/bin/qemu
    
por Brydon Gibson 14.08.2018 / 20:28

3 respostas

2

Em sistemas com a versão mlocate de locate , você pode limitar as correspondências usando a opção -b ou --basename :

locate -b lib

... o que limitaria os resultados a arquivos cujos nomes contenham a string. No meu sistema, isso resulta em muitos menos resultados:

$ locate lib | wc -l
28901
$ locate -b lib | wc -l
3430
    
por 14.08.2018 / 20:47
2

locate imprime uma lista de nomes de caminhos absolutos. Você pode sempre canalizar o resultado por meio de grep para obter apenas nomes de arquivos

locate lib |grep -E '/lib$'

ou apenas nomes de diretório

locate lib |grep '/lib/' | sed -e 's,/lib/.*$,/lib,' | sort -u

Se você fez isso com freqüência suficiente, você poderia escrever um pequeno script que fizesse cada um deles (parametrizando o "lib", é claro).

    
por 14.08.2018 / 21:58
0

podemos limitar o número de entradas usando a opção -l como abaixo.

 locate -w lib -l 1
  • -w corresponde à palavra exata

  • -l Sair com sucesso após encontrar a ocorrência do número que especificou

Ou você pode usar a opção -b

locate -b '\lib' -l 1
  • -b Corresponde apenas o nome base aos padrões especificados
por 14.08.2018 / 20:36

Tags