9

locate "*.png" возвращает все файлы, заканчивающиеся на .png , как и ожидалось.

locate "test.*" ничего не возвращает, но в моей системе есть файлы с именем test .

locate "*test" возвращает все файлы, заканчивающиеся на test , как и ожидалось.

locate "test*" ничего не возвращает, но в моей системе есть файлы, начинающиеся с test .

Почему подстановочные знаки, кажется, работают только для "окончания"?

1 ответ1

11

locate "test.*" ничего не возвращает, но в моей системе есть файлы с именем test.

. трактуется как точка, а не как регулярное выражение как произвольный символ, поэтому test.* не соответствует test , но test.foo .

locate "test*" ничего не возвращает, но в моей системе есть файлы, начинающиеся с test .

locate хранит полный путь к файлу, поэтому, чтобы найти файлы, начинающиеся с test, вы должны использовать locate "*/test*" .

Последний пункт может сбить с толку, так как команда locate foo находит все, включая foo , поэтому шаблон интерпретируется как *foo* . Кажется, что шаблон не заключен в звезды, если в шаблоне уже есть один подстановочный знак.

Отказ от ответственности: я провел некоторые тесты, и это мои выводы, я не могу доказать их, ссылаясь на справочную страницу, которая кажется очень элементарной.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .