Вы можете использовать рекурсивный grep с флагом -l, чтобы печатать только имя файла, а не совпадающую строку:
grep -Rl foo .
Или вы можете использовать find: [!d1 ]
find . -type f -exec grep -l foo {} +
Или. вы можете использовать extglob и нормальный grep
shopt -s extglob
grep -l foo **/*