Следующее работает как задумано:
$ 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
Это, однако, ничего не возвращает.
Что случилось?
РЕДАКТИРОВАТЬ: Отладка:
$ 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
Как упоминалось в @steeldriver, locate
по умолчанию прикрепляет подстановочный знак *
к началу и концу поискового запроса (так что locate abc
фактически ] locate * abc *
) кроме , когда вы сами добавляете подстановочный знак к поисковому запросу, тогда он не добавляет и не добавляет дополнительные подстановочные знаки *
.
Итак, хотя $ locate synse _ * _ r_unseen_zs.npy
ничего не находит, потому что не добавляет *
к поисковому запросу, $ 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
не является полным путем к файлу, поэтому locate /synse_*_r_unseen_zs.npy
ничего не возвращает (поскольку результаты поиска locate _ * _ r_unseen_zs .npy
в вашем Ubuntu - это пустой набор), однако * / synse _ * _ r_unseen_zs.npy
- это полный путь к файлу (ам), поэтому найдите * / synse _ * _ r_unseen_zs.npy
возвращает результаты команды. Символ звездочки в этих командах интерпретируется функцией locate как подстановочный знак. Звездочка может представлять любое количество символов (включая ноль, другими словами, ноль или более символов).