Nehmen Sie zum Beispiel diesen Befehl:
find . -regex ".*\.\(cpp\|h\)"
Dadurch werden alle .h- und .cpp-Dateien in Ihrem Verzeichnis gefunden. Das Punktzeichen '.' in regulären Ausdrücken bedeutet normalerweise "jedes Zeichen". Damit es nur einem tatsächlichen Zeitraum entspricht, müssen Sie es mit dem Backslash-Zeichen '\' maskieren.
In diesem Fall müssen Sie ein Zeichen mit einer besonderen Bedeutung maskieren, um das tatsächliche Zeichen zu erhalten, das es darstellt.
Nehmen Sie nun die Klammern und den Balken "oder" als Zeichen '(', ')' bzw. '|'. Diese haben auch spezielle Bedeutungen, die zum Gruppieren regulärer Ausdrücke verwendet werden. Um die besondere Bedeutung zu erhalten, müssen die Zeichen jedoch mit dem Backslash maskiert werden! Ohne den Backslash haben die Zeichen die Bedeutung des tatsächlichen Zeichens, das sie darstellen.
Warum ist der '.' anders behandelt als '(', ')' und '|'?
quelle