Da es sich hier um das Auffinden von Dateien handelt, verwenden wir find
!
Mit GNU find können Sie die Option -regex
verwenden, um jene Dateien im Verzeichnisbaum zu finden, deren Erweiterung entweder .h
oder .cpp
ist:
find -type f -regex ".*\.\(h\|cpp\)"
# ^^^^^^^^^^^^^^^^^^^^^^^
Dann ist es nur noch eine Frage der Ausführung von grep
auf jedes seiner Ergebnisse:
find -type f -regex ".*\.\(h\|cpp\)" -exec grep "Ihr Muster" {} +
Wenn Sie diese Distribution von find nicht haben, müssen Sie einen Ansatz wie den von Amir Afghani verwenden, der -o
zum Verketten von Optionen nutzt (der Name endet entweder mit .h
oder mit .cpp
):
find -type f \( -name '*.h' -o -name '*.cpp' \) -exec grep "Ihr Muster" {} +
# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Und wenn Sie wirklich grep
verwenden möchten, befolgen Sie die angegebene Syntax für --include
:
grep "Ihr Muster" -r --include=*.{cpp,h}
# ^^^^^^^^^^^^^^^^^^^