Я бы решил решить вашу проблему другим путем. find
может найти определенные файлы в вашей файловой системе, а xargs
позволяет запускать команды для заданных входных файлов. Поэтому я бы использовал такую команду:
find ./ -type f -print0 | xargs -0 -I{} -n1 -P4 grep -IP $REX '{}' >> result
Это будет поиск, начиная с текущего каталога (./
) для всех обычных файлов (-type f
), и безопасно передаст их xargs
на случай, если в имени файла есть пробелы (-print0
) , xargs
затем для каждой команды запускается ваша команда grep
. -I{}
сообщает xargs
, что там, где он видит {}
, он вставит имя файла в команду. Не обязательно здесь, но хорошая практика. -0
идет рука об руку с -print0
из find
и говорит ему ожидать ввода таким образом. -P4
указывает xargs
запускать до 4 процессов одновременно, а -n1
, как описано в справочной странице, намекает xargs
на использование только одного аргумента за раз на команду.
Существуют различные настройки, которые вы можете сделать здесь, независимо от того, хотите ли вы искать все файлы или просто углубиться в определенную глубину, но эта общая команда должна помочь вам начать работу с этим типом задачи.