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' {} +