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.