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.