Okna.  Wirusy.  Laptopy.  Internet.  Biuro.  Narzędzia.  Kierowcy

znajdź polecenie w systemie Linux/FreeBSD. Znajdź składnię poleceń.

Znajdź składnię polecenia:

# find [ścieżka] [opcje] [parametry wyszukiwania] [akcje na plikach]

Ścieżka- gdzie szukać plików, możesz skorzystać z listy ścieżek oddzielonych spacjami.

Opcje- zaczynając od symbolu „-”, po którym następuje nazwa opcji:
-D Przeszukaj podkatalogi przed przeszukaniem samego katalogu
-L Podczas wyszukiwania podążaj za dowiązaniami symbolicznymi
-maxgłębokość N Podczas wyszukiwania sprawdzaj nie więcej niż N zagnieżdżonych poziomów katalogów
-mingłębokość N Nie skanuj podkatalogów poziomu N lub niższego
-uchwyt Nie szukaj w katalogach innych systemów plików

Opcje wyszukiwania

- czas N Plik był ostatnio otwierany N dni temu
-mtime N Plik był ostatnio modyfikowany N dni temu
-nazwa Wzorzec Nazwa pliku (wzorzec nazwy) bez określenia ścieżki. Zaleca się zawsze ująć wzór w cudzysłów
-rozmiar [±]N Rozmiar pliku wynosi N bloków, jeśli określono +N, wówczas rozmiar pliku jest większy niż N, -N jest mniejszy. Znak po N wskazuje rozmiar bloku. b - 512 bajtów, c - bajt, w - 2 bajty, k - kilobajt, M - megabajt, G - gigabajt.
-type N Typ pliku N. Najczęściej używane wartości dla N to: d - katalog, f - plik.
-użytkownik Nazwa użytkownika Plik jest własnością użytkownika o nazwie Nazwa użytkownika.

Przykłady użycia polecenia find z wykorzystaniem parametrów:

# znajdować . -type f -name "~*" -print

Znajdź w bieżącym katalogu zwykłe pliki (nie katalogi), których nazwy zaczynają się od znaku „~”.

# znajdować . -nowszy plik.bak -typ f -print

Znajdź pliki w bieżącym katalogu, które zostały zmodyfikowane później niż plik.bak.

Operatorzy
Kryteria można łączyć za pomocą operatorów. Poniżej znajdują się operatory w kolejności malejącej.

Forma krótka Długa forma Opis
!criteria -not Negacja (zwraca wartość true, jeśli kryterium jest fałszywe)
kryterium1-a kryterium2 -oraz operator AND (prawda, jeśli kryterium1 i kryterium2 są prawdziwe)
kryterium1-o kryterium2 -lub operator OR (prawda, jeśli kryterium1 lub kryterium2 jest prawdziwe)

Ogólnie rzecz biorąc, podczas korzystania z operatorów kryteria są sprawdzane według priorytetu. Kolejność można zmienić za pomocą nawiasów. Nawiasy muszą być oddzielone ukośnikiem odwrotnym.

Przykłady użycia polecenia find z wykorzystaniem operatorów

#znajdować. \(-nazwa "%*" -lub -nazwa "temp*" \) -wpisz f -print

Znajdź pliki w bieżącym katalogu, które zaczynają się od symbolu „%” lub „temp” i są plikami ( -wpisz f), a nie katalogi.

# znajdować . -max głębokość 1 \(\(-rozmiar +600M -i -rozmiar -1G \) -lub -nazwa "*.mpeg" \) -i -wpisz f

Znajdź w bieżącym katalogu (bez przetwarzania podkatalogów - -maxdeph 1) zwykłe pliki ( -plik f) większy niż 600 MB i mniejszy niż 1 GB (-rozmiar) lub pliki, których nazwa kończy się na „.mpeg” (-nazwa).

Działania na plikach
Po wykonaniu polecenia find można wykonywać różne działania na znalezionych plikach. Spójrzmy na główne.

Wykonaj polecenie\; - Wykonaj polecenie. Należy pamiętać, że po poleceniu następuje ukośnik odwrotny i średnik.
-execdir polecenie\; - To samo co exec, ale polecenie jest wywoływane z podkatalogu zawierającego bieżący plik.
-ok polecenie \; - To samo co exec, ale przed przetworzeniem kolejnego pliku wyświetli się żądanie wykonania polecenia.
-okdir polecenie \; -Tak samo jak ok dla execdir.
-print – Wydrukuj nazwę pliku na ekranie.
-ls – Wykonaj polecenie ls -dils na bieżącym pliku.

W wykonywalnych poleceniach możesz użyć parametr () jako argument, który jest zastępowany ścieżką do bieżącego pliku.

Przykłady użycia polecenia find przy użyciu akcji

# znajdować . -rozmiar +1000c -typ f -ls

Znajdź w bieżącym katalogu zwykłe pliki większe niż 1000 bajtów i uruchom na nich polecenie ls -dils (akcja ls).

# znajdować . -name "~*" -type f -ok rm () \;

Znajdź zwykłe pliki w bieżącym katalogu, zaczynając od znaku tyldy „~” i dla każdego pliku wyślij żądanie jego usunięcia (wykonaj polecenie rm).

PRZYKŁADY:

Szukaj plików według ich rozmiaru

# znajdź /var/log -nazwa "*.log" -i \(-rozmiar +1k -i -rozmiar -1000k \) -i -wpisz f -print

Zostaną znalezione i wyświetlone pliki z rozszerzeniem *.log o rozmiarze od 1kb do 1000kb.

Wyszukuj pliki według ich właściciela i grupy

To polecenie znajdzie wszystkie pliki, które nie mają właściciela

Opcje -użytkownik Lub -uid umożliwiają wyszukiwanie plików według identyfikatora użytkownika (UID) i nazwy użytkownika oraz opcji -grupa według nazwy grupy.

# znajdować . -nazwa "*.log" -korzeń użytkownika -korzeń grupy

Znajduje wszystkie pliki w bieżącym katalogu z dziennikiem rozszerzeń użytkownika root i grupy root

# znajdź -user root -o -user www

Znajduje wszystkie pliki użytkownika root lub www

Używanie wyrażeń regularnych

Pożytek znajdować obsługuje wyrażenia regularne. Podajmy od razu przykład. Załóżmy, że chcę znaleźć wszystkie pliki z rozszerzeniami .php lub .js. Mógłbym to zrobić w ten sposób:

# find -regextype posix-egrep -regex ".*(php|js)$"

Wygląda to na trochę skomplikowane, prawda? Jako zaprzeczenie zwracamy uwagę, że zastosowana tutaj składnia jest taka egrep (-regextype posix-egrep), a następnie określa wyrażenie regularne używane do wyszukiwania. Wyrażenie zaczyna się i kończy pojedyncze cudzysłowy aby sama powłoka nie próbowała przetworzyć wyrażenia regularnego. Następnie pojawia się wyrażenie.*, które używa symbolu wieloznacznego pasującego do dowolnego znaku lub zestawu znaków. Część (php|js) mówi, aby wyszukać php lub js. Przenośnik (|) w tym wyrażeniu odpowiada wyrażenie logiczne"Lub". Wreszcie znak dolara ($) kończący wyrażenie wskazuje, że szukamy tych rozszerzeń na końcu nazwy pliku. Jeśli więc masz plik o nazwie js.txt, nie będzie on odpowiadał kryteriom wyszukiwania.

Praca z czasem
Narzędzie find ma wszystko, czego potrzebujesz do wyszukiwania przed rozpoczęciem pracy nad plikiem. Możesz wyszukiwać według czasu dostępu ( -czas), albo do czasu ostatniej modyfikacji pliku (-mtime), albo do czasu jego ostatniej zmiany ( -Czas).

Na przykład znajdźmy wszystkie pliki, które nie zostały zmodyfikowane w ciągu ostatnich dwóch dni:

# znajdź -mtime +2

Jeśli chcesz wyszukiwać pliki w określonym zakresie, możesz połączyć opcje. Zatem polecenie find -mtime +2 -mtime -5 oznaczałoby „dwa lub więcej dni temu, ale nie więcej niż pięć dni temu”.

Pracujemy minutami
Czasami trzeba wyszukać pliki, które zostały zmodyfikowane w ciągu ostatniego dnia, a poprzednie opcje wyszukiwania nie są w tym przypadku zbyt dokładne. Dobrą rzeczą w find jest to, że ma również parametry. -amina, -cmin I -mmin, które są podobne do wcześniej omówionych opcji, ale wykorzystują minuty, a nie dni. Jeśli więc chcesz sprawdzić, które pliki zostały zmodyfikowane lub do których uzyskano dostęp w ciągu ostatniego dnia, możesz skorzystać z tych opcji.

Ograniczenia wyszukiwania
Czasami narzędzie find zapewnia więcej wyników, niż potrzeba. Możesz ograniczyć wyniki wyszukiwania zwracane przez find, określając parametr maksymalna głębokość. Na przykład, jeśli chcesz znaleźć wszystkie pliki JavaScript w katalogu WordPress, możesz użyć następującego polecenia:

# znajdź wordpress -name "*js"

Ale co, jeśli chcesz zobaczyć tylko pliki JavaScript znajdujące się w katalogu najwyższego poziomu? Możesz zawęzić wyszukiwanie za pomocą parametru -maksymalna głębokość:

# znajdź wordpress -max głębokość 1 -name "*js"

Wyszukiwanie zostanie przeprowadzone wyłącznie w katalogu WordPress, a nie w podkatalogach. Jeśli zmienisz wartość -maksymalna głębokość o 2, wówczas wyszukiwanie będzie przeprowadzane w podkatalogach katalogu WordPress, ale nie w głębszych podkatalogach.

Łączenie narzędzia find z innymi poleceniami
Skoro już znalazłeś pliki, których szukałeś, co zamierzasz z nimi zrobić? Możesz użyć parametrów w narzędziu find xargs Lub -wykon, które pozwalają określić działania podejmowane na plikach po ich znalezieniu.

Załóżmy, że chcesz natychmiast zmienić właściciela pliku z root na www-data duża ilość akta. Znalezienie wszystkich tych plików to dopiero pierwszy krok, konieczna jest także zmiana właściciela pliku. Zrób to ręcznie, korzystając z listy zwróconej przez narzędzie znajdować, dość męczące. Dlatego, aby zmienić właścicieli plików, możesz skorzystać z tej opcji -wykon:

# find -user root -exec chown www-data()\;

Jeśli często pracujesz wiersz poleceń na komputerze lub serwerze, gdzie ich nie ma powłoka graficzna, prędzej czy później staniesz przed zadaniem wyszukiwania plików. Na szczęście Linux ma już wbudowane polecenie, które pozwala znaleźć plik w systemie.

Dzisiaj porozmawiamy o korzystaniu z polecenia find - uwierz mi, warto nauczyć się pracować z tym potężnym i wygodne narzędzie.

Jak korzystać z polecenia Znajdź

Krótko mówiąc, podstawowa składnia polecenia find jest następująca:

Znajdź parametr /path nazwa pliku

Rozumiemy możliwości zespołu

Wyszukaj plik według nazwy

Pierwszym parametrem jest ścieżka. Jeśli nie masz pojęcia, gdzie plik może być ukryty, zamień ścieżkę na / - to wystarczy. Jednak przeszukiwanie całego dysku może być dość czasochłonne, więc jeśli wiesz, gdzie może znajdować się plik, określ folder, od którego chcesz rozpocząć wyszukiwanie (na przykład ~, aby przeszukać folder domowy użytkownika).

Przejdźmy teraz do parametrów wyszukiwania. Istnieją dwie możliwości wyszukiwania pliku według nazwy:

  • nazwa — wyszukaj nazwę pliku uwzględniającą wielkość liter
  • iname — wyszukiwanie nazwy pliku bez uwzględniania wielkości liter

Trzeba pamiętać, że w Linuksie wielkość liter w nazwie pliku ma znaczenie i jeśli trzeba znaleźć np. plik Ubuntu.txt, to poniższe polecenie nie da żadnego rezultatu:

Znajdź / -nazwa ubuntu.txt

Możesz jednak użyć polecenia iname i przeprowadzić wyszukiwanie bez uwzględniania wielkości liter:

Znajdź / -iname ubuntu.txt

Szukaj według typu

Polecenie find umożliwia wyszukiwanie nie tylko plików. Oto typy uchwytów obsługujących wyszukiwanie:

  • f - zwykły plik
  • d - katalog
  • l - dowiązanie symboliczne
  • c - urządzenie znakowe
  • b - urządzenie blokujące

Na przykład, aby znaleźć wszystkie katalogi w katalogu domowym bieżącego użytkownika, które zaczynają się od „config”, uruchom następującą komendę:

Znajdź ~ -type d -name config*

Wyprowadzanie wyników wyszukiwania do pliku

Wygodna funkcja wyprowadzenia wyniku polecenia do pliku będzie niezwykle przydatna, jeśli wyników wyszukiwania jest dużo lub istnieje potrzeba późniejszej pracy z nimi. Na przykład, aby zapisać listę wszystkich znalezionych pliki konfiguracyjne do pliku conf_search, uruchom następujące polecenie:

Znajdź /etc -type f -name „*.conf” > conf_search

Wyszukaj pliki według rozmiaru

Jest to bardzo przydatna opcja, gdy kończy się miejsce na dysku i trzeba dowiedzieć się, gdzie się podziało. Na przykład, aby znaleźć pliki większe niż 1000 MB, uruchom następujące polecenie:

Znajdź / -rozmiar +1000M

Można stosować następujące skróty rozmiarów:

  • c - bajty
  • k - kilobajty
  • M - megabajty
  • G - gigabajty
  • b - bloki po 512 bajtów

To tylko kilka sposobów użycia potężnego polecenia. Więcej sposobów można znaleźć w instrukcji, uruchamiając polecenie

Niewątpliwie podczas pracy z Linuksem czasami istnieje taka potrzeba wyszukiwanie plików z pewnymi cechami. Cechami tymi mogą być rozmiar lub typ pliku, prawa dostępu i inne.


Dostępność w Polecenia Linuksa znajdować, bardzo pomaga sobie z tym poradzić wyszukiwanie plików według różnych kryteriów.


Dzisiaj będziemy szukać wyszukiwanie plików w systemie Linux i podaj główne opcje poleceń znajdować które możesz zastosować w swojej pracy.

Forma polecenia znajdować:

znajdowaćścieżka-opcje

Gdzie ścieżka- jest to katalog, w którym należy szukać. Jako ścieżkę można określić następujące wartości:

. - wyszukiwanie w bieżącym katalogu;

/ - wyszukiwanie w katalogu głównym;

~ - szukaj w katalogu domowym.

Jeśli chodzi o opcje, jest ich wiele większa lista, co jest niezwykle ważne, aby uważnie je przeczytać (to bardzo pomoże w przyszłości!). Więc, podstawowe opcje poleceń find:

-nazwa- wyszukaj pliki według nazwy, korzystając z udostępnionego szablonu;

-użytkownik- wyszukaj pliki należące do określonego użytkownika;

-grupa- wyszukaj pliki należące do określonej grupy;

-trwała ondulacja- wyszukaj pliki z określonym trybem dostępu;

-typ- wyszukaj pliki określonego typu. Istnieje również wiele typów:

  • b - specjalny plik blokowy;
  • d - katalog;
  • c - specjalny plik symboli;
  • f - zwykły plik;
  • l - dowiązanie symboliczne;
  • p - nazwana rura;
  • s - gniazdo.
-rozmiar nr- wyszukaj pliki o rozmiarze n jednostek;

-mczas -n +n- wyszukaj pliki, których zawartość została zmieniona mniej niż (-) lub więcej niż (+) dni temu.

Spójrzmy na niektóre przykłady użycia polecenia znajdować :

Najczęściej używaną opcją jest opcja -nazwa, który wyszukuje pliki według nazwy.

Przykłady z opcją -name :

$ znajdź /mnt/usb -nazwa "*.mp3" -print

wyszuka wszystkie pliki (oznaczone znakiem *) z rozszerzeniem .mp3 na urządzeniu USB zamontowanym w katalogu /mnt/usb.

$ znajdź ~ -nazwa "test*" -print

wyświetli listę plików w katalogu domowym zaczynającą się od test.

Jeśli chcesz znaleźć pliki zaczynające się na określone litery (na przykład od a do j), wygodnie będzie użyć wyrażeń regularnych, które są niezwykle wygodne w użyciu:

$ znajdź / -nazwa "*" -drukuj

Powyższe polecenie znajdzie wszystkie pliki w systemie zaczynające się od liter od a do j.

Wyszukaj pliki z określonymi trybami dostępu

Jeśli chcesz znaleźć pliki, które mają określone tryby dostępu, ta opcja Ci pomoże -trwała ondulacja, co z łatwością w tym pomoże.

Przykładowo wyszukajmy pliki z trybem dostępu 775 (właściciel i grupa mają pełne prawa, a pozostali użytkownicy mają ograniczenia zapisu) znajdujące się w bieżącym katalogu:

$ znajdować . -perm 775 -druk

Wyszukiwanie za pomocą znajdować Z opcją -perm możesz zastosować inną metodę - możesz umieścić łącznik przed wartością trybu, a wtedy wyszukane zostaną pliki, dla których ustawione są wszystkie określone bity uprawnień. Ponadto pozostałe bity są w tym przypadku ignorowane.

Na przykład znajdźmy pliki, do których mają dostęp użytkownicy grupy pełny dostęp:

$ znajdować . -perm -070 -druk

Zamiast łącznika możesz użyć znaku plus. W takim przypadku będzie szukać plików, które mają ustawiony co najmniej jeden z określonych bitów uprawnień. Pozostałe bity są ignorowane.

Wyszukaj pliki określonego użytkownika lub grupy

Wyszukiwanie plików konkretnego użytkownika jest niezwykle proste w realizacji. Aby to zrobić, po prostu uruchom polecenie:

$ znajdź / -użytkownik administrator -print

Powyższe polecenie spowoduje wygenerowanie wyszukiwanie plików w systemie należącym do użytkownika admin.

Aby znaleźć pliki należące do określonej grupy (na przykład menedżerów), uruchom polecenie:

$ find / -menedżerowie grup -print

Aby wyszukać pliki nieistniejących użytkowników lub grup, możesz skorzystać z opcji -Nouser I -brak grupy:

$ znajdź / -nouser -print

$ znajdź / -nogroup -print

Wyszukaj pliki określonego typu

Jedna z wygodnych funkcji polecenia znajdować, to możliwość wyszukiwania plików określonego typu. Rozważmy opcje korzystania z tej opcji -typ:

Wyszukaj dowiązania symboliczne w katalogu /etc:

$ znajdź /etc -wpisz l -print

Wyświetl listę katalogów znajdujących się w katalogu /mnt/raid

$ znajdź /mnt/raid -type d -print

Wyszukaj pliki o określonym rozmiarze

Opcja -rozmiar umożliwia wyszukiwanie plików o określonym rozmiarze i po uruchomieniu ma następujący wygląd:

$ znajdować . -rozmiar 2000k -druk

Powyższe polecenie znajdzie i wyświetli 2-megabajtowe pliki znajdujące się w bieżącym katalogu. Jeśli na przykład chcesz znaleźć pliki mniejsze niż 500 kilobajtów, polecenie będzie wyglądać następująco:

$ znajdować . -rozmiar -500k -druk

Jeśli chcesz znaleźć pliki większe niż 600 megabajtów, użyj polecenia:

$ znajdź / -rozmiar +600M -drukuj

Znajdowanie plików przy użyciu opcji -mtime

Opcja -mczas pozwoli Ci znaleźć pliki, które zmieniły się na przestrzeni czasu.

Przykładowo stanęliśmy przed zadaniem wyszukania plików znajdujących się w katalogu /mnt/raid/upload, które uległy zmianie w ciągu ostatnich 5 dni. Pomoże nam w tym zespół:

$ znajdź /mnt/raid/upload -mtime -5 -print

Jeśli potrzebujemy czegoś odwrotnego, na przykład, aby znaleźć pliki, które nie zmieniły się od tygodnia, używamy polecenia:

$ znajdź /mnt/raid/upload -7 -print

Zespół znajdować jest niezwykle wygodnym narzędziem do wyszukiwanie plików i może być również używany wyszukiwanie plików na dyskach NFS (sieciowych systemach plików), jednak w tym przypadku należy wziąć pod uwagę, że wyszukiwanie czegoś na NFS zajmie znacznie więcej czasu niż na dyskach lokalnych.

W tym artykule przyjrzeliśmy się tylko podstawowym opcjom polecenia find, które pomogą Ci w pracy. Korzystaj z tego, co wygodne i nie przejmuj się drobiazgami!

Podczas pracy na dowolnym systemie operacyjnym czasami zachodzi potrzeba użycia narzędzi szybkie wyszukiwanie ten czy inny plik. Dotyczy to również Linuksa, więc wszystko zostanie omówione poniżej możliwe sposoby wyszukaj pliki w tym systemie operacyjnym. Zostaną zaprezentowane jako narzędzia menedżer plików i polecenia użyte w "Terminal".

Jeśli chcesz określić wiele parametrów wyszukiwania do znalezienia żądany plik, a następnie polecenie znajdować niezastąpiony. Przed rozważeniem wszystkich jego odmian warto zapoznać się ze składnią i opcjami. Ma następującą składnię:

znajdź opcję ścieżki

Gdzie ścieżka- jest to katalog, w którym odbędzie się wyszukiwanie. Istnieją trzy główne opcje określania ścieżki:

  • / — szukaj w katalogu głównym i sąsiednich;
  • ~ — wyszukiwanie według katalogu domowego;
  • ./ — szukaj w katalogu, w którym aktualnie znajduje się użytkownik.

Możesz także określić ścieżkę bezpośrednio do samego katalogu, w którym rzekomo znajduje się plik.

Opcje znajdować wiele i to dzięki nim jest to możliwe do osiągnięcia elastyczna konfiguracja wyszukaj, ustawiając niezbędne zmienne:

  • -nazwa- przeprowadź wyszukiwanie, opierając się na nazwie szukanego elementu;
  • -użytkownik- wyszukiwanie plików związanych z konkretnym użytkownikiem;
  • -grupa- wyszukać konkretną grupę użytkowników;
  • -trwała ondulacja- pokaż pliki z określonym trybem dostępu;
  • -rozmiar nr- wyszukiwanie na podstawie rozmiaru obiektu;
  • -mczas +n -n- wyszukaj pliki, które zmieniły się więcej niż ( +n) lub mniej ( -N) dni temu;
  • -typ- wyszukaj pliki określonego typu.

Istnieje również wiele rodzajów elementów, których szukasz. Oto ich lista:

  • B- blok;
  • F- zwykły;
  • P- nazwana rura;
  • D- katalog;
  • l- łącze;
  • S- gniazdo;
  • C- symboliczne.

Po szczegółowej analizie składni i opcji poleceń znajdować Możesz przejść bezpośrednio do przykładów ilustracyjnych. Ze względu na dużą liczbę możliwości użycia polecenia przykłady nie zostaną podane dla wszystkich zmiennych, a jedynie dla najczęściej używanych.

Metoda 1: Wyszukaj według nazwy (opcja -name)

Najczęściej użytkownicy korzystają z opcji przeszukiwania systemu -nazwa, więc od tego zaczniemy. Spójrzmy na kilka przykładów.

Szukaj według rozszerzenia

Załóżmy, że musisz znaleźć w systemie plik z rozszerzeniem „.xlsx”, który znajduje się w katalogu „Skrzynka Dropbox”. Aby to zrobić, musisz użyć następującego polecenia:

znajdź /home/użytkownik/Dropbox -nazwa "*.xlsx" -print

Z jego składni możemy powiedzieć, że wyszukiwanie odbywa się w katalogu „Skrzynka Dropbox” („/home/użytkownik/Dropbox”), a żądany obiekt musi mieć rozszerzenie „.xlsx”. Gwiazdka wskazuje, że wyszukiwanie zostanie przeprowadzone na wszystkich plikach tego rozszerzenia, bez uwzględnienia ich nazwy. "-wydrukować" wskazuje, że zostaną wyświetlone wyniki wyszukiwania.

Wyszukaj według nazwy pliku

Na przykład chcesz przeszukać katalog "/dom" plik z nazwą „grudki”, ale jego rozszerzenie jest nieznane. W takim przypadku musisz wykonać następujące czynności:

znajdź ~ -nazwa "lumpics*" -print

Jak widać, użyty tutaj symbol to «~» , co oznacza, że ​​wyszukiwanie odbędzie się w katalogu domowym. Po opcji "-nazwa" wskazywana jest nazwa szukanego pliku ( "grudki*"). Gwiazdka na końcu oznacza, że ​​wyszukiwanie zostanie przeprowadzone wyłącznie po nazwie, bez uwzględnienia rozszerzenia.

Szukaj po pierwszej literze imienia

Jeśli pamiętasz tylko pierwszą literę nazwy pliku, istnieje specjalna składnia polecenia, która pomoże Ci ją znaleźć. Na przykład chcesz znaleźć plik zaczynający się na literę od "G" Do „ja” i nie wiesz, w którym katalogu się znajduje. Następnie musisz uruchomić następujące polecenie:

znajdź / -nazwa "*" -drukuj

Sądząc po symbolu „/”, który pojawia się bezpośrednio po główny zespół, wyszukiwanie zostanie przeprowadzone począwszy od katalogu głównego, czyli po całym systemie. Dalej, część «*» oznacza, że ​​wyszukiwane słowo będzie zaczynać się od określonej litery. W naszym przypadku od "G" Do „ja”.

Nawiasem mówiąc, jeśli znasz rozszerzenie pliku, to po symbolu «*» możesz to wskazać. Na przykład musisz znaleźć ten sam plik, ale wiesz, że ma on rozszerzenie „.odt”. Następnie możesz użyć tego polecenia:

znajdź / -nazwa "*.odt" -drukuj

Metoda 2: Szukaj według trybu dostępu (opcja -perm)

Czasami trzeba znaleźć obiekt, którego nazwy nie znasz, ale wiesz, jaki ma tryb dostępu. Następnie musisz skorzystać z tej opcji "-trwała ondulacja".

Jest dość prosty w użyciu; wystarczy określić lokalizację wyszukiwania i tryb dostępu. Oto przykład takiego polecenia:

znajdź ~ -perm 775 -print

Oznacza to, że wyszukiwanie odbywa się w sekcji głównej, a przeszukiwane obiekty będą miały dostęp 775 . Możesz także wpisać symbol „-” przed tą liczbą, wówczas znalezione obiekty będą miały bity uprawnień od zera do określonej wartości.

Metoda 3: Wyszukaj według użytkownika lub grupy (opcje -user i -group)

Każdy system operacyjny ma użytkowników i grupy. Jeśli chcesz znaleźć obiekt należący do jednej z tych kategorii, możesz skorzystać z opcji "-użytkownik" Lub "-grupa" odpowiednio.

Znajdź plik według jego nazwy użytkownika

Na przykład musisz znaleźć w katalogu „Skrzynka Dropbox” plik "Oczy", ale nie wiesz, jak się nazywa, wiesz po prostu, że należy do użytkownika "użytkownik". Następnie musisz uruchomić następujące polecenie:

znajdź /home/user/Dropbox -użytkownik użytkownik-wydrukować

W tym poleceniu podałeś wymagany katalog ( /home/użytkownik/Dropbox), wskazał, że należy poszukać pliku należącego do użytkownika ( -użytkownik) i wskazał, do którego użytkownika należy ten plik ( użytkownik).

Wyszukiwanie pliku według nazwy grupy

Wyszukiwanie pliku należącego do określonej grupy jest równie proste - wystarczy zastąpić tę opcję "-użytkownik" do opcji "-grupa" i podaj nazwę tej grupy:

znajdź / -groupe gość -print

Oznacza to, że wskazałeś, że chcesz znaleźć w systemie plik należący do grupy "gość". Wyszukiwanie odbędzie się w całym systemie, jest to oznaczone symbolem «/» .

Metoda 4: Wyszukaj plik według jego typu (opcja -type)

Znalezienie elementu określonego typu w systemie Linux jest dość proste, wystarczy podać odpowiednią opcję ( -typ) i określ typ. Na początku artykułu zostały wymienione wszystkie oznaczenia typów, które można wykorzystać do wyszukiwania.

Na przykład chcesz znaleźć wszystkie pliki blokowe w swoim katalogu domowym. W tym przypadku Twoje polecenie wyglądałoby następująco:

znajdź ~ -wpisz b -print

W związku z tym wskazałeś, że szukasz według typu pliku, o czym świadczy opcja "-typ", a następnie określiłem jego typ wstawiając symbol pliku blokowego - "B".

W ten sam sposób możesz wyświetlić wszystkie katalogi w żądanym katalogu, wpisując symbol w poleceniu "D":

znajdź /home/użytkownik -wpisz d -print

Metoda 5: Wyszukaj plik według rozmiaru (opcja -size)

Jeśli wszystko, co wiesz o pliku, to jego rozmiar, nawet to może wystarczyć, aby go znaleźć. Na przykład, jeśli chcesz znaleźć w określonym katalogu plik o rozmiarze 120 MB, w tym celu wykonaj następujące czynności:

znajdź /home/user/Dropbox -rozmiar 120M -drukuj

Jak widać, potrzebny nam plik został znaleziony. Jeśli jednak nie wiesz, w którym katalogu się on znajduje, możesz przeszukać cały system, podając katalog główny na początku polecenia:

znajdź / -rozmiar 120M -drukuj

Jeśli znasz przybliżony rozmiar pliku, w tym przypadku istnieje specjalne polecenie. Musisz się zarejestrować "Terminal" to samo, wystarczy umieścić znak przed wskazaniem rozmiaru pliku «-» (jeśli chcesz znaleźć pliki mniejsze niż określony rozmiar) lub «+» (jeśli rozmiar szukanego pliku jest większy niż podany). Oto przykład takiego polecenia:

znajdź /home/user/Dropbox +100M -print

Metoda 6: Znajdź plik według daty modyfikacji (opcja -mtime)

Są chwile, kiedy najwygodniej jest wyszukać plik według daty jego modyfikacji. W systemie Linux odbywa się to za pomocą opcji „-mczas”. Jest dość prosty w użyciu, spójrzmy na wszystko na przykładzie.

powiedzmy w folderze „Obrazy” musimy znaleźć obiekty, które uległy zmianom w ciągu ostatnich 15 dni. Oto, co musisz wpisać "Terminal":

znajdź /home/user/Images -mtime -15 -print

Jak widać, ta opcja pokazuje nie tylko pliki, które uległy zmianie w określonym okresie, ale także foldery. Działa to również w odwrotną stronę – można znaleźć obiekty, które zostały zmienione po określonej dacie. Aby to zrobić, należy wprowadzić znak przed wartością cyfrową «+» :

znajdź /home/user/Images -mtime +10 -print

graficzny interfejs użytkownika

Interfejs graficzny znacznie ułatwia życie początkującym, którzy właśnie zainstalowali Dystrybucja Linuksa. Ta metoda search jest bardzo podobna do tej w systemie Windows, chociaż nie może zapewnić wszystkich korzyści, jakie oferuje "Terminal". Ale najpierw najważniejsze. Przyjrzyjmy się więc, jak wyszukiwać pliki w systemie Linux za pomocą graficzny interfejs użytkownika systemy.

Metoda 1: Przeszukaj menu systemowe

Teraz przyjrzymy się, jak wyszukiwać pliki za pomocą menu Systemy linuksowe. Podjęte działania zostaną wykonane w dystrybucji Ubuntu 16.04 LTS, ale instrukcje są wspólne dla wszystkich.

Rozpoczynając pracę z serwerem Linux, użytkownicy często napotykają problem ze znalezieniem niezbędnych plików.

W tym samouczku opisano użycie odpowiedniego polecenia find, które umożliwia wyszukiwanie plików przy użyciu różnych filtrów i parametrów. Ponadto w tym przewodniku pokrótce omówiono polecenie lokalizacji, którego można używać do lokalizowania poleceń.

Wyszukaj według nazwy pliku

Oczywiście wyszukiwanie pliku według nazwy jest najbardziej oczywistym sposobem na znalezienie potrzebnego pliku.

Aby to zrobić, użyj:

find -name „zapytanie”

To polecenie uwzględnia wielkość liter (tzn. traktuje pliki o nazwach plik i plik jako dwa różne pliki).

Aby znaleźć plik według nazwy, bez rozróżniania wielkości liter, wpisz:

znajdź -iname „zapytanie”

Aby znaleźć pliki, które nie pasują do określonego wzorca, należy odwrócić wyszukiwanie, używając flagi -not lub metaznaku „!”. Należy pamiętać, że podczas używania znaku „!” musisz uciec od znaków powłoka basha nie zinterpretował „!” nawet przed wykonaniem polecenia find.

find -not -name „zapytanie_do_unikania”

znajdować\! -name „zapytanie_do_unikania”

Szukaj według typu pliku

Za pomocą parametru „-type” możesz określić typ wymaganego pliku. Działa to w ten sposób:

find -type zapytanie o deskryptor typu

Oto lista typowych deskryptorów, których można użyć do wskazania typu pliku:

  • F: zwykły plik;
  • D: katalog;
  • l: łącze symboliczne;
  • C: urządzenia znakowe;
  • B: blokowanie urządzeń.

Przykładowo, aby znaleźć wszystkie urządzenia znakowe w systemie należy wydać komendę:

znajdź / -wpisz c
/dev/parport0
/dev/snd/sekw
/dev/snd/timer
/dev/autofs
/dev/cpu/mikrokod
/dev/vcsa7
/dev/vcs7
/dev/vcsa6
/dev/vcs6
/dev/vcsa5
/dev/vcs5
/dev/vcsa4
. . .

Aby znaleźć wszystkie pliki kończące się na .conf, użyj:

znajdź / -wpisz f -nazwa "*.conf"
/var/lib/ucf/cache/:etc:rsyslog.d:50-default.conf
/usr/share/base-files/nsswitch.conf
/usr/share/initramfs-tools/event-driven/upstart-jobs/mountall.conf
/usr/share/rsyslog/50-default.conf
/usr/share/adduser/adduser.conf
/usr/share/davfs2/davfs2.conf
/usr/share/debconf/debconf.conf
/usr/share/doc/apt-utils/examples/apt-ftparchive.conf
. . .

Filtruj według czasu i rozmiaru

Polecenie find pozwala filtrować wynik na podstawie rozmiaru i czasu ostatnia zmiana.

Rozmiar pliku

Aby filtrować pliki według rozmiaru, użyj parametru -size.

Należy również dodać przyrostek na końcu wartości, aby wskazać rozmiar:

  • C: bajt
  • k: kilobajt
  • M: megabajt
  • G: gigabajt
  • B: bloki po 512 bajtów

Aby znaleźć pliki o rozmiarze dokładnie 50 bajtów, wpisz:

znajdź / -rozmiar 50c

Aby znaleźć pliki mniejsze niż 50 bajtów, użyj symbolu „-” przed wartością:

znajdź / -rozmiar -50c

Odpowiednio, aby znaleźć pliki większe niż 700 megabajtów, użyj symbolu + przed wartością; polecenie wygląda następująco:

znajdź / -rozmiar +700M

Szukaj na podstawie czasu

Linux przechowuje dane o czasie dostępu, czasie modyfikacji i czasie zmiany.

  • czas dostępu: czas ostatniego dostępu do pliku (kiedy plik został odczytany lub dodany);
  • czas modyfikacji: czas ostatniej modyfikacji zawartości pliku;
  • czas zmiany: czas ostatniej zmiany i-węzła pliku.

Aby filtrować pliki według czasu, użyj odpowiednio parametrów „-atime”, „-mtime” i „-ctime”.

Wartość tego parametru wskazuje, ile dni temu plik został zmodyfikowany. Podobnie jak w przypadku rozmiaru pliku, możesz użyć symboli – i +, aby pliki zostały zmodyfikowane mniej niż lub więcej niż n dni temu.

Oznacza to, że aby znaleźć plik, którego zawartość została zmieniona 1 dzień temu, użyj:

Aby wyświetlić listę plików, do których uzyskano dostęp mniej niż 1 dzień temu, użyj:

znajdź / -atime -1

Aby znaleźć pliki, których i-węzły zostały zmienione ponad trzy dni temu, wpisz:

znajdź / -ctime +3

Istnieją również powiązane parametry, którego można użyć do określenia minut zamiast dni:

Spowoduje to zwrócenie plików, których zawartość została zmieniona minutę temu.

Dodatkowo polecenie find może porównywać pliki i wyświetlać nowsze:

znajdź / -nowszy mójplik

Szukaj według właściciela i uprawnień

Za pomocą polecenia find możesz wyszukiwać pliki według właściciela lub uprawnień do pliku.

W tym celu używane są odpowiednio parametry –user, –group i -perm. Na przykład, aby znaleźć plik należący do użytkownika o nazwie syslog, wpisz:

znajdź / -user syslog

Podobnie, aby wyświetlić listę plików należących do grupy cieni, użyj:

znajdź / -grupuj cień

Możesz także wyszukiwać pliki ze specjalnymi uprawnieniami.

Aby znaleźć plik z określonymi uprawnieniami, użyj:

znajdź / -perm 644

W tej linii zostaną wyświetlone wszystkie pliki z tymi uprawnieniami.

Aby wyświetlić listę wszystkich plików, których uprawnienia są większe lub równe określonym, użyj składni:

znajdź / -perm -644

Spowoduje to zwrócenie wszystkich plików z dodatkowymi uprawnieniami (na przykład plik z uprawnieniami 744).

Filtrowanie plików według głębokości

Aby uruchomić przykłady ta sekcja, utwórz strukturę katalogów w katalogu tymczasowym. Powinien składać się z trzech poziomów katalogów, z dziesięciu katalogów na pierwszym poziomie. Każdy katalog (łącznie z katalogiem testowym) musi zawierać dziesięć plików i dziesięć podkatalogów.

Aby utworzyć taką strukturę, uruchom następującą komendę:

płyta CD
mkdir -p ~/test/katalog poziomu1(1..10)/katalogpoziom2(1..10)/katalogpoziom3(1..10)
dotknij ~/test/(plik(1..10),poziom1katalog(1..10)/(plik(1..10),poziom2katalog(1..10)/(plik(1..10),poziom3katalog( 1..10)/plik(1..10))))
płyta ~/test

Aby przejrzeć właśnie utworzoną strukturę i sprawdzić, czy wszystko zostało utworzone poprawnie, użyj poleceń ls i cd. Następnie wróć do katalogu testowego test:

W tej sekcji dowiesz się, jak wyodrębnić określone katalogi z tej struktury. Aby rozpocząć, spróbuj prostego wyszukania pliku według nazwy:

znajdź -nazwa pliku1







./level1dir7/level2dir8/level3dir6/file1
./level1dir7/level2dir8/level3dir5/file1

. . .

To polecenie dało dość obszerny wynik. Przekazując ten wynik do licznika, można zobaczyć, że ostatecznie wygenerowano 1111 plików.

znajdź -nazwa pliku1 | wc -l
1111

Oczywiście w większości przypadków wniosek ten jest zbyt długi i niewygodny. Spróbuj to zawęzić.

Aby to zrobić, możesz użyć parametru –max głębokość, aby ustawić maksymalną głębokość wyszukiwania:

znajdź zapytanie -max głębokość num -nazwa

Aby znaleźć plik 1 w katalogach poziomu 1 i wyższych, określ maksymalną głębokość 2 (1 dla katalogu najwyższego poziomu i 1 dla katalogów poziomu 1).

znajdź -maxgłębię 2 -nazwa pliku1
./poziom1katalog7/plik1
./poziom1katalog1/plik1
./poziom1katalog3/plik1
./poziom1katalog8/plik1
./poziom1katalog6/plik1
./plik1
./poziom1katalog2/plik1
./level1dir9/file1
./poziom1katalog4/plik1
./poziom1katalog5/plik1
./poziom1katalog10/plik1

Jak widać, ten wynik wygląda o wiele wygodniej.

Dodatkowo możesz określić minimalną głębokość wyszukiwania:

znajdź zapytanie -mingłębione num -nazwa

Służy do wyszukiwania plików znajdujących się na końcu gałęzi katalogów:

znajdź -mingłębię 4 -nazwa pliku
./level1dir7/level2dir8/level3dir9/file1
./level1dir7/level2dir8/level3dir3/file1
./level1dir7/level2dir8/level3dir4/file1
./level1dir7/level2dir8/level3dir1/file1
./level1dir7/level2dir8/level3dir8/file1
./level1dir7/level2dir8/level3dir7/file1
./level1dir7/level2dir8/level3dir2/file1
. . .

Ponownie wynik ten będzie zawierał ogromną liczbę plików (1000).

Maksymalną i minimalną głębokość wyszukiwania można połączyć, aby zmniejszyć zasięg wyszukiwania:

znajdź -min głębokość 2 -max głębokość 3 -nazwa pliku
./level1dir7/level2dir8/file1
./level1dir7/level2dir5/file1
./level1dir7/level2dir7/file1
./level1dir7/level2dir2/file1
./level1dir7/level2dir10/file1
./level1dir7/level2dir6/file1
./level1dir7/level2dir3/file1
./level1dir7/level2dir4/file1
./poziom1katalog7/plik1
. . .

Wykonywanie i łączenie poleceń

Narzędzie find umożliwia wykonanie dowolnego polecenia pomocniczego na wszystkich znalezionych plikach; Służy do tego opcja –exec. Podstawowa składnia wygląda następująco:

znajdź parametry_wyszukiwania -exec parametry_polecenie_i_() \;

Znaki () służą jako elementy zastępcze znalezionych plików. Symbole \; służą do umożliwienia find określenia, gdzie kończy się polecenie.

Na przykład możesz znaleźć pliki z uprawnieniami 644 (jak w poprzedniej sekcji) i zmienić ich uprawnienia na 664:

płyta ~/test
znajdować . -perm 644 -exec chmod 664 ()\;

Następnie możesz zmienić uprawnienia do katalogu:

znajdować . -perm 755 -exec chmod 700 ()\;

Aby połączyć wiele wyników, użyj poleceń -i lub -or. W przypadku pominięcia przyjmuje się polecenie –and.

znajdować . -nazwa pliku1 -lub -nazwa pliku9

Znajdowanie plików za pomocą polecenia Locate

Polecenie lokalizacji jest alternatywą dla funkcji Znajdź. To polecenie jest zazwyczaj szybsze i umożliwia łatwe przeszukiwanie całego systemu plików.

Możesz zainstalować to polecenie za pomocą apt-get:

sudo apt-get update
sudo apt-get install mlocate

Ale dlaczego polecenie lokalizowania jest szybsze niż polecenie znajdowania? Rzecz w tym, że lokalizacja zależy od bazy danych plików system plików.

Zazwyczaj skrypt cron aktualizuje tę bazę danych raz dziennie; ale można go również zaktualizować ręcznie. Uruchom to polecenie:

Pamiętaj: baza danych musi być regularnie aktualizowana, aby zawierała aktualne dane; w przeciwnym razie znalezienie ostatnio otrzymanych lub utworzonych plików nie będzie możliwe.

Aby znaleźć pliki za pomocą polecenia „local”, po prostu użyj następującej składni:

Wynik można również filtrować.

Na przykład, aby zwrócić tylko pliki zawierające samo żądanie, zamiast wyświetlać listę wszystkich plików zawierających żądanie w katalogach prowadzących do niego, możesz użyć flagi -b (aby przeszukać tylko nazwę bazową, podstawową nazwę pliku):

Aby polecenielocation zwracało tylko pliki, które nadal istnieją w systemie plików (tzn. pliki, które nie zostały usunięte między ostatnim uruchomieniem aktualizacji a bieżącym wywołaniem funkcji lokalizowania), użyj opcji -e:

Aby wyświetlić statystyki skatalogowane za pomocą polecenialoc, użyj opcji –S:

zlokalizuj -S
Baza danych /var/lib/mlocate/mlocate.db:
3315 katalogów
37 228 plików
1 504 439 bajtów w nazwach plików
594 851 bajtów używanych do przechowywania bazy danych

Wyniki

Polecenia znajdź i zlokalizuj są doskonałymi narzędziami do wyszukiwania plików w systemie UNIX systemy operacyjne. Każde z tych narzędzi ma swoje zalety.

Chociaż polecenia znajdź i zlokalizuj same w sobie mają ogromne możliwości, można je ulepszyć, łącząc je z innymi poleceniami. Kiedy już nauczysz się używać funkcji znajdź i zlokalizuj, spróbuj filtrować wyniki za pomocą poleceń wc, sort i grep.

Tagi: ,

Jeśli zauważysz błąd, zaznacz fragment tekstu i naciśnij Ctrl+Enter
UDZIAŁ: