正規表現でORがサポートされていますか?

正規表現でORがサポートされていますか?

たとえば、ディレクトリ内の「m」または「sh」で終わるすべてのファイルを検索したいとします。以下は正しく実行されます。

find . -regex '.*.m' -o -regex '.*.sh'

しかし、これは失敗します。

find . -regex '.*.(m|sh)'

私は何が間違っていましたか?

ベストアンサー1

ちょうど地獄から脱出しました:

find . -regex '.*.\(m\|sh\)

うまくいくようです。正規表現の特殊文字をエスケープする必要があるのか​​、他のツール間でエスケープする必要があるのか​​についての合意はあまりないと思います。

おすすめ記事