grep -r -e string directory
-r es para recursivo; -e es opcional pero su argumento especifica la expresión regular a buscar. Curiosamente, POSIX grep no es necesario para admitir -r (o -R ), pero estoy prácticamente seguro de que System V en la práctica (casi) todos lo hacen. Algunas versiones de grep lo hizo, entoncesgrep soporte -R así como (o posiblemente en lugar de) -r; AFAICT, significa lo mismo.
Si su grep admite -R , hacer:
grep -R 'string' dir/
Si no, usa find :
find dir/ -type f -exec grep -H 'string' {} +