Wyszukiwanie w witrynie

Jak znaleźć określony ciąg lub słowo w plikach i katalogach


Czy chcesz znaleźć wszystkie pliki zawierające określone słowo lub ciąg tekstowy w całym systemie Linux lub w danym katalogu? W tym artykule dowiesz się, jak to zrobić. Dowiesz się, jak rekurencyjnie przeszukiwać katalogi, aby znaleźć i wyświetlić listę wszystkich plików zawierających dany ciąg tekstu.

Prostym sposobem na rozwiązanie tego problemu jest użycie narzędzia do wyszukiwania wzorców grep. Jest to potężne, wydajne, niezawodne i najpopularniejsze narzędzie wiersza poleceń służące do wyszukiwania wzorców i słów z plików lub katalogów w systemach uniksowych.

Przeczytaj także: 11 zaawansowanych poleceń „Grep” w systemie Linux dotyczących klas znaków i wyrażeń w nawiasach

Poniższe polecenie wyświetli listę wszystkich plików zawierających linię z tekstem „check_root” poprzez rekurencyjne i agresywne przeszukiwanie katalogu ~/bin.

grep -Rw ~/bin/ -e 'check_root'

Gdzie opcja -R mówi grep, aby rekurencyjnie czytał wszystkie pliki w każdym katalogu, podążając za dowiązaniami symbolicznymi tylko wtedy, gdy znajdują się one w wierszu poleceń i opcją -w< instruuje go, aby wybrał tylko te linie zawierające dopasowania, które tworzą całe słowa, a -e służy do określenia ciągu (wzorca) do przeszukania.

Powinieneś używać polecenia sudo podczas przeszukiwania określonych katalogów lub plików wymagających uprawnień roota (chyba że zarządzasz systemem za pomocą konta root).

 
sudo grep -Rw / -e 'check_root'	

Aby zignorować rozróżnienie wielkości liter, użyj opcji -i, jak pokazano:

grep -Riw ~/bin/ -e 'check_root'

Jeśli chcesz poznać dokładną linię, w której znajduje się ciąg tekstowy, dołącz opcję -n.

grep -Rinw ~/bin/ -e 'check_root'

Zakładając, że w katalogu, w którym chcesz przeszukiwać, znajduje się kilka typów plików, możesz także określić typ przeszukiwanych plików, na przykład według ich rozszerzenia, używając opcji --include.

Ten przykład instruuje grep, aby przeglądał tylko wszystkie pliki .sh.

grep -Rnw --include=\*.sh ~/bin/ -e 'check_root'

Dodatkowo istnieje możliwość wyszukiwania więcej niż jednego wzorca za pomocą poniższego polecenia.

grep -Rinw ~/bin/ -e 'check_root' -e 'netstat'

Otóż to! Jeśli znasz inną sztuczkę wiersza poleceń umożliwiającą znalezienie ciągu lub słowa w plikach, podziel się z nami lub zadaj pytania dotyczące tego tematu, korzystając z poniższego formularza komentarza.