Chciałbym wymienić rekursywnie i jednoznacznie pliki zawierające dane słowo.
Przykład : Sprawdzanie słowa „czek”, normalnie robię to grep
$ grep check * -R
Ale ponieważ występuje wiele słów tego słowa, otrzymuję wiele wyników. Muszę więc tylko wymienić nazwy plików zawierające podane słowo wyszukiwania. Wydaje mi się, że wystarczy sztuczka find
i xargs
wystarczyłaby tutaj, ale nie jestem pewien.
Jakieś pomysły?
find
grep
file-search
Mt.
źródło
źródło
grep -rl "text to find" "/usr/share"
i działało świetnie!Prawdopodobnie nie chcesz używać
-R
opcji, która w nowoczesnych wersjach GNUgrep
podąża za dowiązaniami symbolicznymi podczas zstępujących katalogów.-r
Zamiast tego skorzystaj z opcji, która od wersji 2.12 (kwiecień 2012 r.) Nie korzysta już z dowiązań symbolicznych.Jeśli twój grep nie jest GNU, lub jest starszy niż wersja 2.12, lub jeśli potrzebujesz, aby twój kod był przenośny w systemach GNU, które nie są tak zaawansowane, użyj
find
powyższej komendy.W przeciwnym razie możesz wykonać:
Nie używaj
*
(ponieważ pomijałoby to ukryte pliki w bieżącym katalogu (i tylko w bieżącym katalogu) i powodowałoby problemy dla plików, których nazwa zaczyna się na a-
), unikaj przekazywania opcji po argumentach, ponieważ nie ma gwarancji, że będzie działać w zależności od środowisko i nie jest przenośny.źródło
Spróbuj tego:
Jeśli chodzi o
grep
flagi ...-c
zwróci nazwę pliku, po której następuje: oraz liczbę wskazującą, ile razy szukany ciąg pojawia się w danym pliku.-v
pobierze dane wyjściowe z pierwszegogrep
wyszukiwania, odfiltruje pliki z zerowymi wynikami i wydrukuje tylko pliki z niezerowymi wynikami.źródło
:0
. Lepiej to zrobićgrep -v ':0$'
. Nawet to dusi się w ścieżkach zawierających znaki nowej linii.grep -rin "whatToFind" locationToFInd
np. $ grep -rin "vihaan".
będzie rekurencyjnie wyszukiwać i wyświetlać nazwy plików oraz odpowiadające im wiersze, które zawierają „vihaan”, „.” odnosi się do bieżącego katalogu.
źródło
szukaj w bieżącym katalogu. Aby wyszukać z katalogu głównego, określ
/
zamiast.
źródło
grep -lR "text-to-find" <where-to-find>
działa również dobrze.np.
grep -lR "NAVIGATE" .
gdzie znajdujemy słowoNAVIGATE
w.
bieżącym katalogu.źródło
Daje ci listę
.q
plików zawierających słowo kluczowetrim
źródło