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