Почему поиск * / файла * имя работает, а поиск файла * имени - нет?

Следующее работает как задумано:

$ 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
1
задан 24 May 2021 в 23:43

2 ответа

Как упоминалось в @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 
0
ответ дан 28 July 2021 в 11:36

При поиске файлов команда 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 как подстановочный знак. Звездочка может представлять любое количество символов (включая ноль, другими словами, ноль или более символов).

3
ответ дан 28 July 2021 в 11:36

Другие вопросы по тегам:

Похожие вопросы: