В вашем примере синтаксиса неявно ли понимается, что есть экранирующий символ, так что вы можете явно включить файл, начинающийся с тире? (Тот же вопрос относится и к любым другим символам подстановки, но я полагаю, что я ожидаю увидеть больше файлов с тире в их именах, чем звездочек.)
Различные командные оболочки используют * (и, возможно,?, Чтобы соответствовать одному символу), как в вашем примере, но они обычно совпадают только со строкой символов, которая не включает разделитель компонентов пути (то есть '\' в Windows системы, '/' в другом месте). Я также видел, что такие приложения управления исходным кодом, как Perforce, используют дополнительные шаблоны, которые могут совпадать с разделителями компонентов пути. Например, с Perforce шаблон "foo / ... ext" (без кавычек) будет соответствовать всем файлам в структуре каталога foo /, которые заканчиваются на "ext", независимо от того, находятся ли они в самом foo / или в одном из его каталоги потомков. Кажется, это полезный шаблон.