Przydatne wskazówki

Wyszukaj - w systemie Linux z funkcją find

Pin
Send
Share
Send
Send


Na wstępie opiszemy, jak ogólnie możesz wyszukiwać w systemie Linux. Istnieje wiele programów do tych celów, ale niektóre z nich stały się już klasykami linuksowymi. Podkreślamy, że w tym artykule skupimy się wyłącznie na systemie Linux. Oznacza to, że nawet jeśli napotkasz narzędzia o tych samych nazwach w systemach operacyjnych Solaris lub BSD, te wskazówki mogą nie zawsze działać. Dotyczy to również busyboksa, który implementuje tylko niewielką część funkcjonalności oryginalnych narzędzi.

Poznaj więc bohaterów dzisiejszej recenzji: zlokalizować - zapewnia wyszukiwanie według nazwy pliku we wstępnie przygotowanej bazie danych, znajdź - Działa na prawdziwym systemie plików i zapewnia niesamowite możliwości wyszukiwania plików i folderów według różnych parametrów. Porozmawiamy również o grep - narzędzie do wyszukiwania tekstu w plikach.

Wyszukaj plik według nazwy za pomocą narzędzia do lokalizacji

Aby wykonać proste wyszukiwanie plików według nazwy w systemie Linux, bardziej logiczne jest użycie polecenia locate - ze względu na wcześniej przygotowaną bazę danych szybko uzyska pożądany wynik:

Jeśli pojawi się komunikat informujący, że polecenie nie zostało znalezione, być może trzeba go zainstalować. W przypadku dystrybucji opartych na Debianie (Ubuntu, Mint), możesz zainstalować go za pomocą polecenia:

# apt-get zainstaluj mlocate

Użytkownicy RedHat, CentOS i Fedora powinni zakończyć

# yum zainstaluj mlocate

Po instalacji musisz utworzyć / zaktualizować bazę danych - plik zawierający „migawkę” systemu plików, dzięki czemu lokalizacja działa tak szybko:

Tj. zamiast za każdym razem przeglądać cały system plików, zlokalizuj trustb updatedb, aby utworzyć plik zawierający wszystkie nazwy i ścieżki systemu plików, i przeszuka w nim. Ważne jest, aby zachować jego trafność, w przeciwnym razie możesz przypadkowo znaleźć pliki, które zostały już usunięte przez długi czas, lub nie znaleźć nowych. Dlatego aktualizacjab podczas instalacji „zawiesza się” na CRON i uruchamia się automatycznie - możesz to sprawdzić, przeglądając pliki zadań CRON.

Wyszukiwanie folderów

W rzeczywistości wyszukiwanie folderu w systemie Linux nie różni się od znajdowania pliku, ponieważ folder jest plikiem. Funkcja find daje nam jednak możliwość określenia typu. Na przykład, aby jawnie przeszukać tylko foldery, których nazwy zawierają słowo, na przykład mysql, uruchom

# find / -type d -name "* mysql *"

Tutaj przełącznik „-type” wskazuje typ. Obecnie find obsługuje następujące typy:

  • b - zablokuj urządzenie
  • c - urządzenie znakowe
  • d - folder (katalog)
  • p - nazwany potok
  • f - zwykły plik
  • l - link symboliczny
  • s - gniazdo
  • D - Drzwi (tylko Solaris)

Możesz przeczytać więcej o różnych parametrach wyszukiwania wyszukiwania, wpisując polecenie

Wyszukiwanie tekstu w systemie Linux za pomocą grep

Tak, grep jest naprawdę bardzo dobry, jeśli chodzi o znajdowanie tekstu w plikach Linux według wzoru. Natychmiast zastrzegamy, że będziemy wyszukiwać tekst w zwykłych plikach tekstowych - zwykły tekst, taki jak pliki konfiguracyjne, skrypty powłoki (bash. Python, php.) I inne. Jest mało prawdopodobne, abyśmy mogli skutecznie wyszukiwać za pomocą plików Word i Excel z winogronami.

Tak więc, aby wyszukać ciąg znaków we wszystkich plikach w katalogu, na przykład / etc, powinieneś wpisać

# grep -lri root / etc / *

Takie polecenie wyświetli nazwy wszystkich plików, w których można znaleźć upragnione 4 litery „root”. Tutaj przełącznik „-l” powoduje, że grep wyświetla tylko nazwy plików. Tj. jeśli chcesz zobaczyć również ten wiersz, w którym można było znaleźć żądane słowo, należy pominąć „-l”. Przełącznik „-r” wyszukuje nie tylko w / etc, ale we wszystkich plikach we wszystkich podfolderach. Wreszcie przełącznik „-i” mówi, aby nie rozróżniać wielkości liter, tj. grep będzie szukał nie tylko słowa „root”, ale także „ROOT” i „rOOt”. Masz to

Oczywiście, wspierający grep obsługuje wyrażenia regularne. Aby na przykład wyszukać wiersz, który wyraźnie zaczyna się tym samym słowem, wpisz

# grep -lri ^ root / etc / *

Okładka na początku słowa „root” zobowiązuje grep do wyświetlania tylko tych plików, w których słowo „root” znajduje się na początku wiersza. I jest wiele takich sztuczek. Jeśli nie znasz regex, powinieneś przynajmniej zacząć od Wikipedii

Ogólna składnia

ścieżka do katalogu głównego, od którego chcesz rozpocząć wyszukiwanie. Na przykład znajdź / home / user - wyszukaj w odpowiednim katalogu. W bieżącym katalogu należy użyć kropki „.”.

zestaw reguł, według których szukać.

* Domyślnie wyszukiwanie jest rekurencyjne. Aby wyszukać w określonym katalogu, możesz użyć tej opcji maxdepth.

Opis opcji

Typ obiektu wyszukiwania. Możliwe opcje:

  • f - plik
  • d jest katalogiem
  • l - link
  • p - rura
  • s jest gniazdem.
OpcjaOpis
-nazwaSzukaj według nazwy.
-inameWyszukiwanie bez rozróżniania wielkości liter według nazwy.
typ
-rozmiarRozmiar obiektu Ustawiany jest w blokach po 512 bajtów lub po prostu w bajtach (ze znakiem „c”).
-mtimeCzas zmiany pliku. Jest wskazany w dniach.
-mminZmień czas w minutach.
-atimeCzas ostatniego dostępu do obiektu w dniach.
-aminCzas ostatniego dostępu w minutach.
czasOstatnia zmiana własności lub praw do obiektu w dniach.
-cminOstatnia zmiana własności lub praw w minutach.
-userSzukaj według właściciela.
-grupaWedług grupy
-permaZe szczególnymi prawami dostępu.
głębokośćWyszukiwanie nie powinno zaczynać się od katalogu głównego, ale od najgłębszego zagnieżdżonego katalogu.
-maxdepthMaksymalna głębokość wyszukiwania w katalogu. -maxdepth 0 - szukaj tylko w bieżącym katalogu. Domyślnie wyszukiwanie jest rekurencyjne.
śliwkiWyłączenie wymienionych katalogów.
-mountNie przełączaj się na inne systemy plików.
-regexWedług nazwy z wyrażeniem regularnym.
-regextypeRodzaj wyrażenia szyjnego.
-LPokazuje zawartość dowiązań symbolicznych (dowiązanie symboliczne).
-pusteWyszukaj puste katalogi.
-UsuńUsuń znalezione.
-lsDane wyjściowe jako ls -dgils
-printPokaż znalezione.
-print0Ścieżka do znalezionych obiektów.
-exec <> ,Uruchom polecenie na znalezionym.
-okWyślij polecenie przed uruchomieniem -exec.

Zespół może uzyskać pełny zestaw odpowiednich opcji znaleźć człowieka.

Wyszukaj za pomocą akcji (exec)

Znajdź tylko pliki, które zaczynają się sess_ i usuń je:

znajdź. -name "sess_ *" -type f -print -exec rm <> ,

* -print nie trzeba go używać, ale pokaże wszystko, co zostanie usunięte, dlatego ta opcja jest wygodna w użyciu, gdy polecenie jest wykonywane ręcznie.

Zmień nazwę znalezionych plików:

znajdź. -name "sess_ *" -type f -exec mv <> nowa_nazwa ,

znajdź. -name "sess_ *" -type f | xargs -I '<>' mv <> nowa_nazwa

Wyświetl liczbę znalezionych plików i folderów, które kończą się na .tmp:

znajdź. -nazwa „* .tmp” | wc -l

Zaplanowane czyszczenie

Zespół znajdź wygodny w użyciu do automatycznego usuwania przestarzałych plików.

Otwórz zadanie CRON do edycji:

0 0 * * * / bin / find / tmp -mtime +14 -exec rm <> ,

* w tym przykładzie usuwamy wszystkie pliki i foldery z katalogu / tmp którzy są starsi 14 dni. Zadanie jest uruchamiane codziennie o godz 00:00.
* patrzymy na pełną ścieżkę do komendy znajdowania pliku wykonywalnego które znajdują - w różnych systemach UNIX może być umieszczony w różnych miejscach.

23) Znajdź największe i najmniejsze pliki

Aby wyświetlić listę największych lub najmniejszych plików, używamy find w połączeniu z sortowaniem, a jeśli musimy wyświetlić 3 „bardzo najbardziej”, to używamy także head.

Aby wyświetlić trzy pliki z bieżącego katalogu, wprowadź:

Podobnie możemy wyświetlić najmniejsze pliki w bieżącym katalogu:

Obejrzyj wideo: Linuks. Wyszukiwanie plików i katalogów: polecenie find LI-SR-001 (Styczeń 2022).

Pin
Send
Share
Send
Send