Попробуйте это:
find -regex ".*\.\(cpp\|h\)$"
Пример с большим количеством альтернатив:
find -regex ".*\.\(cpp\|c\|h\|o\)$"
Я дам пример. Это будет искать файлы с owner=1000 и писать им в "uid.list", поиск файлов с group=1000 и писать им в "gid.list", и он пропустит пути, начинающиеся/proc,/sys,/dev. Преимущество объединенных условий состоит в том, что файловая система сканируется только однажды.Вот:
find / \
\( \( -path "/proc" -or -path "/sys" -or -path "/dev" \) -prune \) -or \
\( \( -user 1000 -fprint "uid.list" \) ,
\( -group 1000 -fprint "gid.list" \) \)