find
, como sugerido na resposta de Scott Wilson, é o que eu teria usado. No entanto, se você realmente precisa usar o DB localizar, uma solução hackish poderia ser
sudo strings /var/lib/mlocate/mlocate.db | grep -E '^/.*dirname'
-
sudo
, já que o banco de dados não pode ser lido diretamente por usuários comuns.
-
strings
para remover metadados (isso faz com que você também encontre diretórios para os quais você não tem permissão de leitura, o que locate
geralmente atrapalha).
-
/var/lib/mlocate/mlocate.db
é o caminho do banco de dados no Ubuntu, aparentemente (como um exemplo. Outras distribuições podem tê-lo em outros lugares, por exemplo, /var/lib/slocate/slocate.db
).
-
grep -E
para ativar expressões regulares.
-
^/.*dirname
corresponderá a todas as linhas que começam com /
, que todos os diretórios no banco de dados fazem, seguidas por qualquer caractere várias vezes, seguidas por sua palavra de pesquisa.
Lados positivos desta solução:
- é mais rápido que
find
,
- você pode usar todos os sinos e assobios de
grep
(ou outras ferramentas de processamento de texto favoritas).
Lados negativos:
- o mesmo que
locate
em geral (o banco de dados deve ser atualizado),
- você precisa de acesso root.