Nieważne czy chcesz się nauczyć czy tylko odświeżyć zakurzoną wiedzę - szybko i prosto o find i grep.
Nie bój się linii poleceń
Terminal jest ważnym narzędziem, które umożliwia zaawansowanym użytkownikom wydajną nawigację po systemie plików. Często systemy plików (zwłaszcza na serwerach) są tak duże i złożone, że korzystanie z graficznej przeglądarki plików do ich wyszukiwania jest powolne i nieefektywne. Jeśli jesteś programistą, który zawsze ma otwarty terminal, powinieneś znać podstawy jego obsługi (np. właśnie w zakresie wyszukiwania plików) zamiast od razu sięgać po przeglądarkę.
Dwa najpopularniejsze zapytania linuksowych użytkowników związane z wyszukiwaniem obejmują wyszukiwanie nazwy pliku lub folderu według nazwy oraz wyszukiwanie plików zawierających słowo kluczowe. W tym artykule omówimy polecenia, które pozwolą nam to osiągnąć. Linia poleceń to w końcu nie tylko cd
oraz ls
.
Komenda find
Wyszukiwanie pliku według nazwy jest podstawową funkcją każdego systemu. Polecenie Linuksa, które na to pozwala, nazywa się find. Polecenie find oczekuje następującej składni:
Find [-H] [-L] [-P] [-D opcje debugowania] [-Olevel] [ścieżka ...] [wyrażenie]
Mówiąc prościej, odpowiada to:
find [ścieżka] [opcje] [nazwa]
To polecenie będzie rekurencyjnie wyszukiwać, zaczynając od [ścieżka], pod kątem nazwy określonej przez [opcje]. Poniżej znajduje się kilka typowych poleceń wyszukiwania.
Przykłady
Wyszukaj pliki o podanej nazwie: find . -name [name]
. Zwraca wszystkie pliki o nazwie [name]. W polu nazwy można również podać wyrażenie regularne: find . -name "*.json"
zwróci wszystkie pliki kończące się na „.json”.
A jak wyszukać katalogi o podanej nazwie? Flaga -type
wskazuje, jaki typ pliku ma zwrócić wyszukiwanie. Typy rozpoznawane przez polecenie find to:
- f: zwykły plik
- d: katalog
- l: dowiązanie symboliczne
- c: urządzenia znakowe
- b: urządzenia blokowe
find . -type d -name "src"
zwróci wszystkie katalogi o nazwie „src”.
Sprawdź oferty pracy na TeamQuest
Polecenie grep
Polecenie grep służy do wyszukiwania tekstu w systemie plików. Oczekuje następującej składni:
grep [OPCJE] WZÓR [PLIK ...]
. Poniżej znajduje się kilka typowych poleceń grep.
Wyszukaj podany ciąg w pliku: grep test test.py
- zwraca wiersze zawierające ciąg „test” w pliku „test.py”.
Wyszukaj podany ciąg w wielu plikach: grep test * .py
- zwraca wiersze zawierające ciąg „test” we wszystkich plikach Pythona, które znajdują się w bieżącym katalogu.
Rekurencyjne wyszukiwanie łańcucha w wielu plikach (opcja -r służy do określenia, że wyszukiwanie powinno być rekurencyjne): grep -r test
- zwraca wiersze zawierające ciąg „test” we wszystkich rekurencyjnych podkatalogach.
Wyszukiwanie bez rozróżniania wielkości liter (użycie opcji -i): grep -r -i test
- zwraca wiersze zawierające tekst „test” bez rozróżniania wielkości liter we wszystkich podkatalogach rekurencyjnych.