find ./ -name "*.cpp" -or -name "*.h"
Правда, но приоритет -or не так высок. Из man find:
Please note that -a when specified implicitly (for example by two tests
appearing without an explicit operator between them) or explicitly has
higher precedence than -o. This means that find . -name afile -o -name
bfile -print will never print afile.
Итак:
-name "*.cpp" -or -name "*.h" -exec grep ...
Как:
-name "*.cpp" -or ( -name "*.h" -exec grep ... )
И не нравится:
Вам нужно:
find . \( -name '*.cpp' -o -name '*.h' \) -exec grep -H '#include.*Sample\.h' {} +
(предположим, вы использовали /dev/null, чтобы grep распечатать имя файла? Опция -H делает это.)
Я не знаю, что вызывает замедление в вашей конкретной ситуации, но вы можете проверить bootchart. Вот статья (первый удар в duckduckgo.com) http://www.addictivetips.com/ubuntu-linux-tips/measure-your-ubuntu-systems-boot-performance-with-boot-chart/ Bootchart дает вам графическое представление порядка запуска различных процессов загрузки, сколько используется процессор / (ожидание) диска. Это наиболее полезно, если вы его установили на чистой системе (в качестве ссылки), но, безусловно, стоит попытаться дать вам больше информации о том, что происходит во время загрузки.