Как уже упоминалось, команда find выводит список найденных файлов на стандартный вывод, grep обычно ожидает поиск через стандартный вывод, если вызывается таким образом.
Может также труба найти к xargs , и он будет " строить и выполнять командные строки из стандартного ввода ", как в
$ find . | xargs grep foo
Если у вас есть сумасшедшие имена файлов, с символами новой строки и так далее, тогда это будет лучше:
$ find . -type f -print0 | xargs -0 grep foo
и -type f найдет только обычные файлы, поэтому никаких попыток поиска не будет . или .. или любые каталоги или "смешные" файлы.