A opção --regex
aplica-se ao caminho inteiro, não apenas ao nome do arquivo. Portanto, locate --regex syn$
corresponderá a todos os arquivos e diretórios cujo caminho, incluindo seu nome, terminará em syn
, enquanto locate --regex syn$
corresponderá apenas a um arquivo cujo caminho inteiro seja syn
e que tal arquivo não exista:
$ locate --regex ^etc$ ## returns nothing
$ locate --regex ^/etc$
/etc
A opção que você está procurando é -b
:
-b, --basename
Match only the base name against the specified patterns. This
is the opposite of --wholename.
Você poderia, portanto, fazer
locate -b --regex ^sys$
Isso listará todos os arquivos e pastas em locatedb
cujo nome é exatamente sys
.