Как вы решаете проблему «Слишком много файлов» при работе в Bash?
Мне много раз приходилось работать с каталогами, содержащими сотни тысяч файлов, выполнять сопоставление текста, замену и так далее. Если я иду по стандартному маршруту, скажем,
grep foo *
Я получаю сообщение об ошибке "слишком много файлов"
for i in *; do grep foo $i; done
или же
find ../path/ | xargs -I{} grep foo "{}"
Но они не оптимальны (создайте новый процесс grep для каждого файла).
Это похоже на большее ограничение в размере аргументов, которые могут получить программы, потому что * в цикле for работает нормально. Но, в любом случае, как правильно справиться с этим?
PS: не говорите мне делать вместо этого grep -r, я знаю об этом, я думаю об инструментах, у которых нет рекурсивной опции.