Tome, por exemplo, este comando:
find . -regex ".*\.\(cpp\|h\)"
Isso encontrará todos os arquivos .h e .cpp no seu diretório. O caractere de ponto '.' em expressões regulares geralmente significa "qualquer caractere". Para que ele corresponda apenas a um período real, você deve escapá-lo usando o caractere de barra invertida '\'.
Nesse caso, dado um personagem com um significado especial, você deve escapar dele para obter o caractere real que ele representa.
Agora, pegue o parêntese e a barra "ou", sendo os caracteres '(', ')' e '|', respectivamente. Eles também têm significados especiais, usados para agrupar expressões regulares. No entanto, para obter um significado especial, os caracteres devem ser escapados usando a barra invertida! Sem a barra invertida, os caracteres têm o significado do caractere real que ele representa.
Porque é o '.' tratado de forma diferente de '(', ')' e '|'?
fonte