Jak radzisz sobie z problemem „Zbyt wiele plików” podczas pracy w Bash?

Wiele razy muszę pracować z katalogami zawierającymi setki tysięcy plików, dopasowując tekst, zastępując go i tak dalej. Jeśli przejdę standardową drogą, powiedzmy

grep foo *

Dostaję komunikat o błędzie zbyt wielu plików, więc kończę

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

lub

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

Ale są one mniej niż optymalne (utwórz nowy proces grep na każdy plik).

Wygląda na to, że więcej ograniczeń rozmiaru argumentów, które mogą otrzymać programy, ponieważ * w pętli for działa poprawnie. Ale w każdym razie, jaki jest właściwy sposób radzenia sobie z tym?

PS: Nie mów mi, abym zamiast tego robił grep -r, wiem o tym, myślę o narzędziach, które nie mają opcji rekurencyjnej.

questionAnswers(5)

yourAnswerToTheQuestion