Czy istnieje polecenie umożliwiające wyszukiwanie słowa kluczowego w plikach w katalogu o określonym rozszerzeniu?
Ciąg grep -irn "string" ./path
daje rekurencyjne wyszukiwanie wszystkich plików w katalogu ./path
. Moim szczególnym wymaganiem jest wyszukiwanie we wszystkich plikach ./path
z rozszerzeniem, takim jak*.h
"*.h"
cudzysłowów.foobar.h
w bieżącym katalogu i spróbuj ponownie.S i (obrót) moduł SH Ell opcjonalnie jonów
globstar
poleceniemSpowoduje to, że
**
jako składnik nazwy pliku będzie oznaczać wszystko tutaj i poniżej. Więcpath/**
oznacza wszystko wpath
katalogu i jego podkatalogów . (Nie musisz./
tutaj pisać .) Następnie możesz użyćaby przeszukać wszystkie
.h
pliki do i poniżejpath
.Można u nzad opcji z
shopt -u
.źródło
źródło
-exec
... też+
jest dobre."string"
do swojej odpowiedzi!Jeśli możesz zainstalować coś na swoim komputerze, sugeruję użycie ack .
Możesz zrobić z nim dokładnie to, czego potrzebujesz i wiele więcej. W przypadku użycia możesz:
Aby dowiedzieć się, które filtry plików są obsługiwane natywnie, uruchom polecenie
ack --help=type
.źródło
A co z tym?
Wyjaśnienie:
find
poleceniemfind
poleceniafind
z-exec
, jest to specyfikator końca poleceniaźródło
"*.h"
działa Myślałbym, że to musi być'*.h'
Jeśli używasz gnu grep, to ma flagę, która robi dokładnie to, co chcesz:
chociaż nie sądzę, że jest dostępny w innych greps.
źródło