Я только что попробовал:
find . -name "*.[hc]" -print
а также
find . -name "*.[hc]"
Но оба вывода одинаковы, теперь -print бесполезен?
Глядя на страницу руководства под FreeBSD, я вижу:
 -print  This primary always evaluates to true.  It prints the pathname of
         the current file to standard output.  If none of -exec, -ls,
         -print0, or -ok is specified, the given expression shall be
         effectively replaced by ( given expression ) -print.
Так что во многих случаях, -print не требуется.  Однако рассмотрим это выражение, которое ищет файл с именем foo внутри somedir , но не внутри какого-либо каталога с именем .snapshot:
find somedir -name .snapshot -prune -o -name foo
Учитывая описание, указанное выше, оно будет преобразовано в:
find somedir ( -name .snapshot -prune -o -name foo ) -print
Что не совпадает с тем, что, вероятно, было задумано:
find somedir -name .snapshot -prune -o -name foo -print
Добавление скобок, чтобы сделать группу немного более очевидной, это:
find somedir ( -name .snapshot -prune ) -o ( -name foo -print )
Чтобы заметить разницу, обратите внимание, что -prune и -print оцениваются как true .  Поэтому без указания -print первая версия будет распечатывать текущий файл, если совпадает либо -name .snapshot либо -name foo .
Вторая версия будет выводить текущий файл, только если -name foo соответствует.
Это многословный способ сказать, что -print обычно не требуется, если вы понимаете ситуации, в которых это необходимо.
Это также полезно, когда вы занимаетесь другими делами, но все же хотите посмотреть матчи.
Это общий вызов сценария для меня:
find . -name '*somepattern*' -print -delete