Странное поведение `locate` - почему?
locate "*.png"
возвращает все файлы, заканчивающиеся на .png
, как и ожидалось.
locate "test.*"
ничего не возвращает, но есть файлы с именем test
в моей системе.
locate "*test"
возвращает все файлы, заканчивающиеся на test
, как и ожидалось.
locate "test*"
ничего не возвращает, но есть файлы, начинающиеся с test
в моей системе.
Почему подстановочные знаки, кажется, работают только для "окончания"?
1 ответ
locate "test.*"
ничего не возвращает, но в моей системе есть файлы с именем test.
.
рассматривается как точка, а не как в регулярном выражении как произвольный символ, так test.*
не совпадает test
, но test.foo
,
locate "test*"
ничего не возвращает, но есть файлы, начинающиеся сtest
в моей системе.
locate хранит полный путь к файлу, поэтому для поиска файлов, начинающихся с test, следует использовать locate "*/test*"
,
Последний пункт может быть запутанным, так как locate foo
находит что-либо в том числе foo
Таким образом, шаблон интерпретируется как *foo*
, Кажется, что шаблон не заключен в звезды, если в шаблоне уже есть один подстановочный знак.
Отказ от ответственности: я провел некоторые тесты, и это мои выводы, я не могу доказать их, ссылаясь на справочную страницу, которая кажется очень элементарной.