Wie gehen Sie mit dem Problem "Zu viele Dateien" um, wenn Sie in Bash arbeiten?

Ich muss oft mit Verzeichnissen arbeiten, die Hunderttausende von Dateien enthalten, Text abgleichen, ersetzen und so weiter. Wenn ich die Standardroute von gehe, sagen wir

grep foo *

Ich erhalte die Fehlermeldung, dass zu viele Dateien vorhanden sind

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

oder

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

Diese sind jedoch nicht optimal (erstellen Sie für jede Datei einen neuen grep-Prozess).

Dies scheint eher eine Einschränkung der Größe der Argumente zu sein, die Programme empfangen können, da das * in der for-Schleife in Ordnung ist. Aber wie geht man auf jeden Fall richtig damit um?

PS: Sag mir nicht, ich soll stattdessen grep -r ausführen, ich weiß darüber Bescheid, ich denke über Tools nach, die keine rekursive Option haben.