grep -r foo *
не ищет совпадения в скрытых файлах или каталогах, также *
расширяется оболочкой, так что вы можете получить слишком длинную ошибку в списке аргументов, если в текущем каталоге много записей, или другие ошибки или неправильное поведение, если Имя некоторых файлов или каталогов начинается с символа тире.
Invocation grep -r foo .
не имеет вышеуказанных недостатков
Обновлено:
Еще одно отличие: справочная страница grep (@ fedora17) гласит:
-r, --recursive
Read all files under each directory, recursively, following symbolic links only if they
are on the command line. ...
Также будет разница при выполнении этой команды в пустой директории:
$ grep -r foo *; echo $?
grep: *: No such file or directory
2
$ grep -r foo .; echo $?
1
$