В Mac OS X вы не можете использовать \|
в базовом регулярном выражении, которое find
использует по умолчанию.
re_format man page
[базовые] регулярные выражения отличаются в нескольких отношениях.|является обычным символом, и его функциональность не имеет эквивалента.
Самым простым решением в этом случае является изменение \(m\|h\)
на [mh]
, например
find ./ -regex '.*[mh]$'
ИлиВы можете добавить опцию -E
, чтобы указать находить вместо этого расширенные регулярные выражения.
find -E ./ -regex '.*(m|h)$'
К сожалению -E
не переносимый.
Также обратите внимание, что если вы хотите толькосписок файлов, оканчивающийся на .m
или .h
, вы должны экранировать точку, например,
find ./ -regex '.*\.[mh]$'
Если вас это смущает (я тоже), есть отличная справочная таблица, которая показывает, какие функции поддерживаютсяв каких системах.
Синтаксическая сводка Regex [ Кэш Google ]