Ten samouczek koncentruje się na tym, jak znaleźć pliki w Linuksie za pomocą polecenia znajdź i zlokalizuj.

jako administrator systemu bardzo powszechnym zadaniem jest wyszukiwanie określonego pliku w systemie plików.

jednak czasami może być trudno znaleźć pliki na Linuksowym systemie plików, zwłaszcza jeśli masz dziesiątki różnych użytkowników.

istnieją dwa polecenia, które mogą pomóc w osiągnięciu celu : znajdź i zlokalizuj.,

w tym samouczku zobaczymy, jak efektywnie korzystać z tych poleceń i jak można je dostroić, aby osiągnąć to, czego szukamy.

spis treści

Znajdź pliki za pomocą polecenia Znajdź

pierwszym sposobem na znalezienie i zlokalizowanie plików na hoście Linuksa jest użycie polecenia Znajdź.,

domyślnie polecenie find jest dostępne we wszystkich dystrybucjach i ma następującą składnię

$ find <options> <path> <expression>

szybka wskazówka : czy masz problemy z zapamiętaniem ścieżki lub wyrażenia jako pierwszego?

pamiętaj, że dla grepa jest ścieżka wyrażenia, a find jest odwrotnie, więc wyrażenie ścieżki!

Find jest dość potężnym poleceniem, ponieważ ma znacznie więcej opcji niż polecenie locate.

oto wszystkie możliwości funkcji find w Linuksie.,

Find files with find by filename

najczęstszym zastosowaniem funkcji find jest wyszukiwanie plików o nazwach plików.

$ find <path> -name <pattern>

główną różnicą między find I locate, jeśli chodzi o wyszukiwanie plików, jest to, że find wyszukuje nazwy plików, podczas gdy locate szuka ścieżek do pliku.

na przykład, jeśli wrócimy do przykładu poziomu pracy, którego użyliśmy wcześniej, oto jak szukać plików poziomu pracy za pomocą polecenia find.,

$ find / -name runlevel*

Co to jest część „2> /dev/null?

przekierowałem wyjście błędu do/dev / null za pomocą przekierowania wyjścia, aby uniknąć komunikatów o błędach na konsoli.

Znajdź pliki używając find by filetype

jak już wcześniej omówiliśmy w naszym artykule na temat linków twardych i miękkich, pliki są przypisane do typów plików i są używane jako sposób ich rozróżniania.,

oto podsumowanie wszystkich typów plików używanych w Linuksie.

  • f : standardowy plik
  • d : folder lub katalog
  • l : łącze symboliczne lub łącze miękkie
  • b : urządzenia blokowe (np. dysk twardy)
  • c : urządzenia znakowe (porty szeregowe, Karty dźwiękowe)
  • p : nazwane rury
  • s : Gniazdo

znając wszystkie te typy plików, możesz teraz wyszukać pliki według typu pliku za pomocą polecenia find.

$ find <path> -type <filetype>

na przykład, jeśli wyszukamy wszystkie dowiązania symboliczne na hoście, wydamy następujące polecenie.,

$ find / -type l

parametry można łączyć, na przykład jeśli Szukam wszystkich dowiązań symbolicznych, których nazwy plików kończą się na „.service ” (aby wyizolować wszystkie usługi systemd na przykład), chciałbym uruchomić następujące polecenie.

$ find / -type l -name *.service

Znajdź pliki za pomocą wzorca (dla rozszerzeń)

podobnie jak znajdź polecenie, możesz znaleźć pliki na Linuksie za pomocą wzorca.

dla przypomnienia, wzorzec jest ciągiem znaków, który zawiera znaki globalizujące (takie jak*,?,, lub zakresy).

Ta opcja jest szczególnie, gdy próbujesz znaleźć pliki z rozszerzeniem, na przykład pliki Javascript.

aby znaleźć pliki w systemie Linux za pomocą wzorca, uruchom następujące polecenie

$ find <path> -name ".<extension>"
$ find / -name "*.js"

pliki pliki na Linuksie przez właściciela

czasami chcesz wyizolować pliki utworzone przez określonego użytkownika.

podczas usuwania użytkownika na Twoim hoście możesz chcieć usunąć na przykład wszystkie pliki powiązane z tym użytkownikiem.,

Czasami użytkownicy tworzą pliki z katalogu domowego, a samo usunięcie katalogu domowego użytkownika nie jest wystarczające.

w konsekwencji, aby znaleźć pliki utworzone przez określonego użytkownika w Linuksie, uruchom następujące polecenie

$ find <path> -user <user>

na przykład, aby znaleźć wszystkie pliki należące do „john” na moim komputerze, chciałbym uruchomić następujące polecenie.

$ find / -user john

Co zrobić, jeśli chcę usunąć wszystkie pliki należące do Johna za pomocą prostego polecenia?,

można to łatwo osiągnąć za pomocą flagi delete.

$ find / -user john -delete

Find files on Linux by permissions

używając polecenia find, możesz również znaleźć i zlokalizować pliki, które mają określone uprawnienia na Twoim hoście.

$ find <path> -perm <permissions>

przypomnijmy, jak działają uprawnienia plików w Linuksie.

aby znaleźć wszystkie pliki, które mają pełne uprawnienia (a 777 podano notację binarną), możesz uruchomić następujące polecenie.,

$ find / -perm 777

może to być bardzo przydatne, jeśli ze względów bezpieczeństwa chcesz sprawdzić, czy żadne pliki nie są skonfigurowane z pełnymi uprawnieniami w systemie.

Znajdź pliki za pomocą funkcji Znajdź według rozmiaru

innym bardzo przydatnym sposobem znajdowania i lokalizowania plików w systemie Linux jest znalezienie polecenia Znajdź z opcją rozmiar.

opcja rozmiar pozwala wyszukiwać pliki, które mają dokładnie określony rozmiar, większy niż określony rozmiar lub mniejszy niż określony rozmiar.,

aby wyszukać pliki według rozmiaru, użyj następującego polecenia

$ find <path> -size <size>

rozmiar jest zdefiniowany przez następujące prefiksy :

  • c: bajty
  • b: 512-bajtowe bloki
  • k: kilobajty
  • m: megabajty
  • G: gigabajty

możesz podać”+”, jeśli szukasz plików większych niż określony rozmiar.,

na przykład, aby znaleźć pliki większe niż 1 GB w systemie, uruchom następujące polecenie

$ find / -size +1G

aby znaleźć pliki mniejsze niż 10 MBs w systemie, uruchom następujące polecenie

$ find / -size -10M

wreszcie, aby wyszukać pliki, które mają dokładnie Rozmiar określony w zapytaniu, nie należy dołączać żadnych dodatkowych lub minus prefiksy polecenia.

$ find / -size 1024k

zdefiniowane polecenie znajdzie wszystkie pliki o rozmiarze dokładnie 1024 Kb na twoim komputerze.,

Znajdź pliki w Linuksie według daty modyfikacji

korzystając z funkcji find, możesz również znaleźć pliki z datą modyfikacji, niedawną lub nie.

To polecenie jest bardzo przydatne i dość często używane przez administratorów systemu do wyszukiwania plików lub katalogów, które zostały Ostatnio zmodyfikowane.

aby wyszukać pliki za pomocą find według daty modyfikacji, uruchom następujące polecenie

$ find <path> -mtime <time>

gdzie czas reprezentuje pliki zmodyfikowane 24*< czas> godziny temu.

w konsekwencji czas wyraża się w dniach.,

podobnie do opcji rozmiar, możesz dodać operator „plus” lub „minus” do czasu, aby wyszukać pliki zmodyfikowane więcej niż <czas> dni temu lub mniej niż <czas>

na przykład, aby wyszukać pliki zmodyfikowane dokładnie 3 godziny temu, należy uruchomić następujące polecenie.,

$ find / -mtime 3

aby znaleźć pliki zmodyfikowane ponad tydzień temu, należy uruchomić następujące polecenie

$ find / -mtime +7

aby znaleźć pliki zmodyfikowane mniej niż dwa dni temu, należy uruchomić następujące polecenie

$ find / -mtime -2

Znajdź pliki z dynamiczną głębią

jak zapewne zauważyliście, od początku tego poradnika podajemy przykłady przeszukiwania plików począwszy od katalogu głównego.

w konsekwencji wszystkie foldery są przeglądane rekurencyjnie.,

możemy jednak ograniczyć liczbę katalogów przechodzących rekurencyjnie z jednego katalogu, nazywa się to głębią.

aby ograniczyć wyszukiwanie plików do określonej głębokości, uruchom następujące zapytanie

$ find <path> -maxdepth <depth>

jako przykład możesz ograniczyć wyszukiwanie plików do bieżącego katalogu, bez przeglądania katalogów podrzędnych.

$ find / -maxdepth 1

możesz oczywiście połączyć to polecenie z flagą name, aby wyszukać pliki o danej nazwie w bieżącym katalogu.,

$ find . -maxdepth 1 -name *.tar

Łańcuchowanie znajdź za pomocą-exec

w niektórych przypadkach można może okazać się przydatne, aby połączyć polecenie find z exec.

opcja exec może być używana do łączenia wielu poleceń : biorąc wynik pierwszego jako wejście drugiego.,

powiedzmy na przykład, że chcesz znaleźć wszystkie pliki zmodyfikowane mniej niż minutę temu

$ find /home/user -mmin -1./file1

teraz powiedzmy, że chcesz usunąć wszystkie pliki zmodyfikowane mniej niż minutę temu.

możesz połączyć polecenie find z opcją-exec używając tej składni.

$ find /home/user -mmin -1 -exec echo rm -f '{}' \;

oczywiście najpierw „echo” wyników, ponieważ chcemy upewnić się, że usuwamy poprawne pliki.,

gdy będziesz gotowy do usunięcia tych plików, po prostu usuń polecenie echo.

$ find /home/user -mmin -1 -exec rm -f '{}' \;

Znajdź pliki w Linuksie za pomocą polecenia Locate

innym świetnym sposobem znajdowania i lokalizowania plików w Linuksie jest użycie polecenia locate.

wymagania wstępne

Jeśli polecenie locate jest niedostępne w systemie, przeczytaj następną sekcję, aby uzyskać lokalizację działającą w systemie.,

A – instalacja Locate na dystrybucjach bazujących na APT i RPM

aby zainstalować locate, będziesz potrzebował uprawnień sudo na swoim komputerze Linux.

aby sprawdzić, czy locate jest zainstalowany na Twoim hoście, uruchom polecenie locate w wierszu poleceń.,

$ locate

Jeśli locate jest zainstalowany na twoim komputerze, będzie oczekiwać wyrażenia

Jeśli locate nie jest zainstalowany na twoim komputerze, wyświetlony zostanie komunikat o błędzie

aby zainstalować locate na Ubuntu 18.04 i Debianie 10, uruchom następujące polecenie.,

$ sudo apt-get install mlocate

Podobnie, jeśli korzystasz z dystrybucji CentOS lub Fedora, uruchom następujące polecenie, aby zainstalować locate.

$ sudo yum install mlocate

b – Aktualizacja bazy danych mlocate

funkcja locate działa z lokalną bazą danych przechowywaną w systemie plików, która przechowuje każdą pojedynczą nazwę pliku twojego hosta.

wykonując polecenie locate, locate wyszukuje w bazie danych przygotowanej przez updatedb szukanego pliku.

okresowo, zadanie cron aktualizuje mlocate.plik db, aby wyszukać najnowsze wpisy.,

baza danych znajduje się pod adresem/var/lib/mlocate / mlocate.domyślnie db, a plik konfiguracyjny updatedb jest przechowywany w pliku / etc / updatedb.conf.

na razie możesz zostawić domyślne opcje i uruchomić proste polecenie updatedb, aby odświeżyć bazę danych.

$ sudo updatedb

Znajdź pliki o określonej nazwie

najbardziej podstawowy sposób wyszukiwania pliki w Linuksie mają dostarczać wzorzec do polecenia locate.,

domyślnie składnia polecenia locate jest następująca

$ locate ... ...

Jeśli szukasz danego pliku konfiguracyjnego w systemie, łatwym sposobem na znalezienie go jest podanie pełnej nazwy pliku do polecenia locate.

$ locate updatedb.conf

jak widzisz, polecenie locate zwraca pełne ścieżki do pliku, którego szukam za.,

Zlokalizuj pliki w zastrzeżonych katalogach

czasami możesz nie mieć dostępu do niektórych katalogów w systemie.

w konsekwencji nie będzie można zlokalizować znajdujących się w nim plików.

weźmy przykład zakazanego folderu zawierającego plik o nazwie „restricted-file”.

aby zlokalizować pliki znajdujące się w zastrzeżonych katalogach, musisz uruchomić polecenie locate z uprawnieniami sudo.,

$ sudo locate restricted-file

Zlokalizuj pliki za pomocą wzorca

za pomocą polecenia zlokalizuj może dostarczyć „wzory” w postaci znaków globbingu.

znaki Globbingowe, zwane również symbolami wieloznacznymi, są znakami używanymi w celu dopasowania jednego lub wielu wpisów za pomocą uproszczonego wyrażenia.

najpopularniejszym z nich jest”*”, które będzie pasować do każdej postaci, w tym żadnej.

oto tabela podsumowująca globowanie znaków i ich funkcji.,6934f1″>

devdevco, matches one character given in the bracket ab aab, bab cab matches one character from the (locale-dependent) range given in the bracket runlevel runlevel1, runlevel2, runlevel6 runlevels, runlevelo

As an example, here’s a way to locate all text files on your system.,

$ locate *.txt

Zlokalizuj pliki za pomocą wyrażenia regularnego

zgodnie z opisem oficjalna strona podręcznika locate, polecenie locate przyjmuje wzorzec jako wejście.

oznacza to, że możesz podać Wyrażenie regularne poleceniu locate.

aby znaleźć i zlokalizować pliki z wyrażeniem regularnym, użyj opcji –regex dla polecenia locate.,

$ locate --regex <regex>

na przykład, aby wyizolować wszystkie pliki zaczynające się od poziomu pracy, po którym następuje Liczba, należy uruchomić następujące polecenie.

$ locate --regex runlevel+

gdy używasz wyrażeń regularnych, jest jeden ważny punkt, o którym powinieneś wiedzieć, gdy lokalizowanie plików.

polecenie locate szuka ścieżek do plików w swojej lokalnej bazie danych.,

w związku z tym podczas wyszukiwania plików należy mieć świadomość, że wyrażenie regularne musi pasować do ścieżki do pliku, a nie samej nazwy pliku.

na przykład, jeśli poszukam plików zaczynających się od „run”, żadne wyniki nie będą zwracane, ponieważ ścieżka do pliku zaczyna się od „/usr”.

Zlokalizuj pliki używając opcji bez rozróżniania wielkości liter

podczas wyszukiwania plików w systemie plików możesz nie być pewien, jak dany plik został nazwany.,

pisano wielkimi czy małymi literami? Czy zawiera w ogóle wielkie litery?

aby znaleźć i zlokalizować pliki za pomocą opcji niewrażliwej na wielkość liter, Dodaj opcję-i do komendy locate.,

$ locate -i <file_pattern>

wyszukiwanie plików według zawartości za pomocą grep

w niektórych przypadkach możesz być zainteresowany wyszukiwaniem plików, które pasują do określonego słowa zdania, które znajduje się wewnątrz pliku.

może się to zdarzyć na przykład, jeśli próbujesz znaleźć plik zawierający określone zdarzenia dziennika.,

pierwszym sposobem wyszukiwania plików pasujących do określonego słowa jest użycie polecenia grep

$ grep -r <pattern> <path>

uwaga : nie zapomnij opcji „-r”, Jeśli przeszukujesz pliki przez całe katalogi.

na przykład., jeśli szukasz wszystkich plików zawierających „błąd” w swojej zawartości, znajdujących się w katalogu domowym, wpisz

$ grep -r error /home/user

w niektórych przypadkach możesz chcieć znaleźć pliki z wyrażeniem regularnym.

aby znaleźć pliki za pomocą wyrażenia regularnego, użyj opcji „- E”.,

$ grep -r -E <expression> <path>

Załóżmy na przykład, że chcesz znaleźć plik pasujący do wzorca 'abc' w jednym z Twoich plików, wpisz

$ grep -r -E "abc.*" --color /home/user

uwaga : Opcja kolor jest używana do podświetlania dopasowań za pomocą polecenia grep.,

Znajdź pliki za pomocą których

kolejny świetny sposób na zlokalizowanie plików na Linux ma używać polecenia which.

polecenie which jest używane w celu zlokalizowania plików powiązanych z określonym poleceniem.

może to być bardzo przydatne, gdy nie wiesz, gdzie przechowywałeś pliki binarne dla polecenia lub jeśli musisz zlokalizować polecenie, aby dodać je do ścieżki.,

$ which <command>

na przykład, aby wyszukać pliki powiązane z poleceniem „ls”, wpisz

$ which ls/usr/bin/ls

jak widzisz, otrzymujesz pełną ścieżkę do pliku.

Zlokalizuj pliki binarne za pomocą whereis

podobnie jest całkowicie możliwe wyszukiwanie plików za pomocą polecenia whereis.

polecenie „whereis” może być postrzegane jako superset polecenia „whereis”:” whereis ” dostarcza informacji o nazwie polecenia, lokalizacji pliku, a także lokalizacji stron podręcznika.,

aby wykonać whereis, po prostu wpisz „whereis” i dołącz nazwę polecenia.

$ whereis lsls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

całkiem przydatne!

podsumowanie

w dzisiejszym tutorialu nauczyłeś się, jak znaleźć i zlokalizować pliki w Linuksie za pomocą dwóch ważnych komend : locate I find.

nawet jeśli opcja była prezentowana indywidualnie, należy pamiętać, że można ją łączyć, aby móc określić jeszcze więcej plików, których szukasz.

jak zawsze, jeśli interesuje Cię administracja systemem Linux, mamy na naszej stronie pełną sekcję poświęconą Linuksowi.,

As always, here is a short video on the subject in case you prefer Youtube videos.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *