O seguinte está funcionando conforme pretendido:
$ locate */synse_*_r_unseen_zs.npy
/mnt/home/dario/temp/synse_resources/language_modelling/repo_test_cadavae_5_r_val/bert/cadavae_5_r_unseen_zs.npy /mnt/home/dario/temp/synse_resources/language_modelling/repo_test_synse_10_r_val/bert/synse_10_r_unseen_zs.npy
$ locate synse_*_r_unseen_zs.npy
Isso, no entanto, não retorna nada.
E aí?
EDITAR: Depuração:
$ echo */synse_*_r_unseen_zs.npy
*/synse_*_r_unseen_zs.npy
$ echo /synse_*_r_unseen_zs.npy
/synse_*_r_unseen_zs.npy
$ echo synse_*_r_unseen_zs.npy
synse_*_r_unseen_zs.npy
Responder1
Ao localizar arquivos, um comando de localização que contém curingas padrão (também conhecidos como padrões globbing) procura caminhos para arquivos em seu banco de dados local. /synse_*_r_unseen_zs.npy
não é um caminho completo para um arquivo, portanto locate /synse_*_r_unseen_zs.npy
não retorna nada (porque os resultados da pesquisa locate synse_*_r_unseen_zs.npy
no seu Ubuntu são um conjunto vazio), porém */synse_*_r_unseen_zs.npy
é um caminho completo para arquivo(s), portanto locate */synse_*_r_unseen_zs.npy
retorna os resultados do comando. O caractere asterisco nesses comandos é interpretado por localizar como um curinga. O asterisco pode representar qualquer número de caracteres (incluindo zero, ou seja, zero ou mais caracteres).
Responder2
Como @steeldriver mencionou, locate
por padrão anexa um *
curinga ao início e ao final do termo de pesquisa (o mesmo locate abc
acontece com locate *abc*
)excetoquando você mesmo adiciona um curinga ao termo de pesquisa, ele não acrescenta nem precede os *
curingas extras.
Portanto, embora $ locate synse_*_r_unseen_zs.npy
não encontre nada porque não está acrescentando a *
ao termo de pesquisa, $ locate *synse_*_r_unseen_zs.npy
encontra o esperado
/mnt/home/dario/temp/synse_resources/language_modelling/repo_test_cadavae_5_r_val/bert/cadavae_5_r_unseen_zs.npy /mnt/home/dario/temp/synse_resources/language_modelling/repo_test_synse_10_r_val/bert/synse_10_r_unseen_zs.npy