Следующее работает так, как задумано:
$ 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
Однако это ничего не вернуло.
Как дела?
EDIT: Отладка:
$ 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
решение1
При поиске файлов команда locate, содержащая стандартные подстановочные знаки (также известные как шаблоны подстановки), ищет пути к файлам в своей локальной базе данных. /synse_*_r_unseen_zs.npy
не является полным путем к файлу, поэтому locate /synse_*_r_unseen_zs.npy
ничего не возвращает (потому что результаты поиска locate synse_*_r_unseen_zs.npy
в вашем Ubuntu представляют собой пустой набор), однако */synse_*_r_unseen_zs.npy
является полным путем к файлу(ам), поэтому locate */synse_*_r_unseen_zs.npy
возвращает результаты команды. Символ звездочки в этих командах интерпретируется locate как подстановочный знак. Звездочка может представлять любое количество символов (включая ноль, другими словами, ноль или более символов).
решение2
Как отметил @steeldriver, locate
по умолчанию добавляет *
подстановочный знак к началу и концу поискового запроса (так locate abc
оно и есть на самом деле locate *abc*
)кромекогда вы добавляете подстановочный знак самостоятельно в поисковый запрос, то дополнительные *
подстановочные знаки не добавляются и не добавляются в начало.
Итак, пока $ locate synse_*_r_unseen_zs.npy
ничего не находит, поскольку не добавляется префикс a *
к поисковому запросу, $ 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