Para fazer o grep imprimir apenas o nome do arquivo, passe a opção -l . Para procurar uma substring em vez de uma expressão regular, passe a opção -F .
Para pesquisar recursivamente por arquivos cujo nome corresponda a um determinado padrão, use find com as -type f e -name PATTERN primárias. Use -exec para invocar o grep.
find . -name '*.sas' -type f -exec grep -F -l 'Carhart' {} +
Se você quiser evitar erros de diretórios que você não pode percorrer, use -perm , -user e -group para analisar as permissões (o que é difícil de acertar e não trabalhe se você tiver o ACL), ou chame test (que é retardado porque é um programa externo, mas é mais confiável).
find . -type d ! -exec test -r {} -a -x {} \; -prune -o \
-name '*.sas' -type f -exec test -r {} \; -exec grep -F -l 'Carhart' {} +