Ответы:
Глобализация имени файла оболочки и регулярные выражения используют одни и те же символы, и они имеют схожие цели, но вы правы, они не совместимы. Глобализация имени файла - гораздо менее мощная система.
В подстановке имени файла:
* означает «ноль или более символов»
? означает «любой отдельный символ»
Но в регулярных выражениях вы должны использовать .*для обозначения «ноль или более символов» и .означает «любой отдельный символ». A ?означает нечто совершенно иное в регулярных выражениях: ноль или один экземпляр предыдущего элемента RE.
Квадратные скобки ( []), кажется, работают одинаково в обеих системах в системе, на которой я это печатаю, по крайней мере, для простых случаев. Это включает в себя такие вещи, как классы символов POSIX (например [:alpha:]). Тем не менее, если вам нужно, чтобы ваши команды работали на многих различных типах систем, я рекомендую не использовать ничего, кроме элементарных вещей, таких как списки символов (например [abeq]) и, возможно, диапазоны символов (например [a-c]).
Эти различия означают, что две системы взаимозаменяемы только для простых случаев. Если вам нужно сопоставить имена файлов с помощью регулярных выражений, вам нужно сделать это по-другому. find -regexэто один из вариантов. (Обратите внимание, что find -name, кстати, также используется синтаксис glob.)
'%'означает '*'.
Отвечая на вопрос, выраженный в оригинальном заголовке:
Почему регулярные выражения отличаются от используемых для фильтрации файлов?
Расширение имени файла предшествует регулярным выражениям, уже существующим в большинстве операционных систем (подстановочные знаки / символы джокера), и намного проще и интуитивнее, чем последние.
Хотя *.txtэто легко понять обычным пользователям, аналогия .*\.txtболее ориентирована на опытных пользователей / программистов, не говоря уже о ^.*\.txt$...
*.txtне равно .*\.txt, оно (в основном) равно, .*\.txt$потому что после ничего не может быть .txt(по крайней мере, при условии разумного искажения имени файла). Возможно даже ^.*\.txt$несколько в зависимости от использования. Доказывает вашу точку зрения?