grep -r foo *
no busca coincidencias en archivos o directorios ocultos, también *
se expande por el shell, por lo que puede terminar con un error de lista de argumentos demasiado largo cuando hay muchas entradas en el directorio actual, o algunos otros errores o mal comportamiento si el El nombre de algunos de los archivos o directorios comienza con un guión.
La invocación grep -r foo .
no tiene los defectos anteriores
Actualizado:
Otra diferencia: la página de manual de grep (@ fedora17) dice:
-r, --recursive
Read all files under each directory, recursively, following symbolic links only if they
are on the command line. ...
También habrá una diferencia cuando ejecute este comando en un directorio vacío:
$ grep -r foo *; echo $?
grep: *: No such file or directory
2
$ grep -r foo .; echo $?
1
$