GNU find di default usa le espressioni regolari di emacs, puoi cambiare quel tipo con -regextype
opzione (vedi man find).
Se usi -regextype posix-egrep
la tua espressione sembra funzionare. Probabilmente potresti anche ridurre il pattern a ^.+(jpg|gif|exe)$
Con emacs:find . -regex '.+\(jpg\|gif\|exe\)$'
. Vedi questa sezione del manuale di emacs per quelle specifiche regole regex. Devi sfuggire a |
e ()
per non essere letterali.
In emacs regexps (
, |
e )
sono letterali a meno che sfuggito, questo è esattamente l'opposto di tutti gli altri formati di espressioni regolari.
La tua espressione funziona come ^.+\.\(jpg\|exe\|gif\)$
.