Możliwa duplikat:
Jak mogę grepować w plikach źródłowych dla jakiegoś tekstu?
Jakie polecenie rekurencyjnie szuka określonego tekstu w określonych typach plików w bieżącym katalogu?
Możliwa duplikat:
Jak mogę grepować w plikach źródłowych dla jakiegoś tekstu?
Jakie polecenie rekurencyjnie szuka określonego tekstu w określonych typach plików w bieżącym katalogu?
ack-grep
, możesz użyć przykładów z pytania na początek (tak jak powiedziałem), tj.find | xargs | grep
Wierszy. Dla konkretnego wyjściaman grep
zawsze warto przeczytać.grep -r --include=*.<type> "<string>" .
, co zadziałało. Niestety strona manuala nie wspomina o kropce końcowej.Odpowiedzi:
To polecenie uruchamia find w katalogu lokalnym (.) Dla wszystkich plików o nazwach zgodnych ze wzorcem * .extension, a następnie uruchamia grep dla „string” w wynikach wyszukiwania . Zauważ, że find jest z natury rekurencyjny. Tak długo, jak możesz odróżnić żądane pliki od plików, których nie znasz na podstawie nazwy, powinno to działać dla Ciebie.
źródło
print0
opcji, aby być bezpieczniejszym.find -print0
nie pomoże, użyj równieżxargs -0
:find . -type f -name "*.ext" -print0 | xargs -0 grep "string"
Aby wyświetlić nazwę pliku, numer wiersza w określonym pliku i wiersz pojawia się tekst:
Będzie działał tylko w bieżącym katalogu, ale dobrze go sformatuje.
źródło