Jak grep ciąg lub tekst w katalogu i wszystkich jego podkatalogów w LINUX?Jak grep ciąg w katalogu i wszystkie jego pliki podkatalogów w LINUX?
Odpowiedz
Jeśli grep obsługuje -R
, zrobić:
grep -R 'string' dir/
Jeśli nie, użyj find
:
find dir/ -type f -exec grep -H 'string' {} +
grep -r -e string directory
-r
jest rekurencyjny; -e
jest opcjonalny, ale jego argument określa wyrażenie regularne do wyszukania. Co ciekawe, POSIX grep
nie jest wymagane do obsługi -r
(lub -R
), ale jestem pewny, że System V grep
zrobił tak, więc w praktyce (prawie) wszyscy to robią. Niektóre wersje grep
obsługują -R
jak również (lub ewentualnie zamiast) -r
; AFAICT, to znaczy to samo.
Jestem prawie pewien, że grep SVR3.2 i SVR4 nie, ponieważ pracowałem nad rozwojem systemu operacyjnego dla produktów SYSV w tym czasie, i miałem skrypt powłoki rgrep, aby go zawijać w tym czasie. Nie mam już więcej do przetestowania. –
@RandyHoward: Dzięki! SVR3.2 i SVR4.0 są wystarczająco staranne, nie dziwi mnie, że moja pamięć jest wadliwa. –
'-R' podąża za dowiązaniami symbolicznymi, które możesz, ale nie chcesz, aby –
Czy zamierzasz przekazać informacje zwrotne na temat napotkanych problemów z 'grep -r' lub' grep -R'? Czy sprawdziłeś stronę podręcznika 'grep' na swoim komputerze? Czy pamiętałeś o zamknięciu wyrażenia regularnego (łańcucha lub tekstu) w cudzysłowie, jeśli zawiera ono metaznaki? –