O comando Locate está retornando muitos resultados

2

Eu cometi o erro de copiar os mesmos arquivos para diferentes partições com boas intenções de poda (excluí-los) da origem ou destino (s) mais tarde. Agora, quando tento localizá-los, recebo muitos resultados do comando locate :

rick@alien:~$ locate "display-auto-brightness"
/etc/cron.d/display-auto-brightness
/home/rick/Pictures/display-auto-brightness conky.png
/home/rick/Pictures/display-auto-brightness systray.png
/home/rick/Pictures/display-auto-brightness-config 1.png
/home/rick/Pictures/ps display-auto-brightness.png
/lib/systemd/system-sleep/display-auto-brightness
/mnt/e/etc/cron.d/display-auto-brightness
/mnt/e/lib/systemd/system-sleep/display-auto-brightness
/mnt/e/usr/local/bin/display-auto-brightness
/usr/local/bin/display-auto-brightness

O comando locate está colocando automaticamente a curinga * após a sequência de pesquisa e retornando resultados indesejáveis extras. Os arquivos .png não devem ser retornados.

Por que locate está retornando muitos resultados?

    
por WinEunuuchs2Unix 19.02.2018 / 02:31

1 resposta

2
  

O comando locate está colocando automaticamente o curinga * após a sequência de pesquisa e retornando resultados indesejáveis extra.

Esse é o comportamento padrão de locate . Veja man locate :

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

Para corresponder apenas ao nome do arquivo, defina explicitamente um glob no componente de caminho:

locate '*/display-auto-brightness'

Ou use um regex e a opção --basename para corresponder a um nome de arquivo exato:

locate --basename --regex '^display-auto-brightness$'

Ou, dados os resultados que você mostrou, você pode simplesmente pedir caminhos que contenham display-auto-brightness no final:

locate --regex 'display-auto-brightness$'

Deixarei que você use isso em um script que passe por cima de cada nome de arquivo em um diretório.

    
por muru 19.02.2018 / 03:14