Как вы решаете проблему «Слишком много файлов» при работе в Bash?

Мне много раз приходилось работать с каталогами, содержащими сотни тысяч файлов, выполнять сопоставление текста, замену и так далее. Если я иду по стандартному маршруту, скажем,

grep foo *

Я получаю сообщение об ошибке "слишком много файлов"

for i in *; do grep foo $i; done

или же

find ../path/ | xargs -I{} grep foo "{}"

Но они не оптимальны (создайте новый процесс grep для каждого файла).

Это похоже на большее ограничение в размере аргументов, которые могут получить программы, потому что * в цикле for работает нормально. Но, в любом случае, как правильно справиться с этим?

PS: не говорите мне делать вместо этого grep -r, я знаю об этом, я думаю об инструментах, у которых нет рекурсивной опции.

Ответы на вопрос(5)

Ваш ответ на вопрос