Tome, por ejemplo, este comando:
find . -regex ".*\.\(cpp\|h\)"
Esto encontrará todos los archivos .h y .cpp en su directorio. El carácter de punto '.' en expresiones regulares generalmente significa "cualquier caracter". Para que coincida solo con un período real, debe escapar usando el carácter de barra diagonal inversa '\'.
En este caso, dado un personaje con un significado especial, debe escapar de él para obtener el personaje real que representa.
Ahora, tome el paréntesis y la barra "o", que son los caracteres '(', ')' y '|', respectivamente. Estos también tienen significados especiales, utilizados para agrupar expresiones regulares. Sin embargo, para obtener el significado especial, ¡los caracteres deben escapar usando la barra invertida! Sin la barra invertida, los caracteres tienen el significado del carácter real que representa.
Porque es el '.' tratado de forma diferente a '(', ')' y '|'?
fuente