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