Polecenie find jest jednym z najbardziej przydatnych i najważniejszych poleceń w systemie Linux.
Jest instalowany domyślnie i dostępny na prawie wszystkich Wersje Linuksa. W Linuksie wszystko jest przechowywane w postaci plików i oczywiście warto wiedzieć, jak szukać tych plików.
Używając znajdź polecenia Możesz wyszukiwać interesujące Cię pliki, korzystając z szeregu kryteriów wyszukiwania. Kryteria można określić zarówno łącznie, jak i osobno, a następnie na podstawie uzyskanego wyniku można podjąć działania. W tym samouczku opiszemy polecenie find na przykładach użycia.
Aby wyświetlić listę wszystkich plików w bieżącym katalogu i jego podkatalogach, możemy użyć:
Alternatywnie możemy również użyć polecenia „znajdź”. ’, co da ci ten sam wynik.
Jeśli potrzebujesz tylko znaleźć katalogi, możesz użyć:
$znajdź. -wpisz D
Aby znaleźć tylko pliki, a nie katalogi:
$znajdź. -wpisz f
Aby znaleźć pliki z określonego katalogu należy wpisać:
$ znajdź /root
To polecenie wyszuka wszystkie pliki w katalogu /root.
Aby wyszukać plik po nazwie w określonym katalogu, wpisz:
$ find /root -nazwa „linuxtechi.txt”
To polecenie wyszuka plik linuxtechi.txt w katalogu /root. Znajdziemy także wszystkie pliki z rozszerzeniem .txt:
$ find /root -nazwa „*.txt”
Aby wyszukać pliki w wielu katalogach, wpisz:
$ find /root /etc -nazwa „linuxtechi.txt”
Za pomocą tego polecenia możemy wyszukać plik linuxtechi.txt w katalogach /root i /etc.
Za pomocą tego polecenia możemy znaleźć plik linuxtechi.txt w katalogach /root i /etc.
Wyszukaj pliki niewrażliwe na wielkość liter, używając opcji -iname:
$ find /root -iname „Linuxtechi.txt”
W rezultacie otrzymasz wszystkie pliki o nazwie linuxtechi.txt. W tym przypadku może być kilka plików, ponieważ linuxtechi.txt będzie równy LINUXTECHI.txt.
Załóżmy, że musimy znaleźć wszystkie pliki oprócz określonego typu. Aby to osiągnąć wpisujemy:
$ find /root -not -name "*.txt"
Podczas wyszukiwania plików możemy połączyć więcej niż jeden warunek. Załóżmy, że potrzebujemy plików z rozszerzeniami .txt i .html:
$znajdź. -regex ".*\.\(txt\|html\)$"
Możemy także połączyć kilka kryteriów wyszukiwania, co doprowadzi do wyszukiwania plików na podstawie spełnienia jednego z warunków. Odbywa się to za pomocą operatora OR:
$ find -name "*.txt" -o -name "linuxtechi*"
Aby znaleźć pliki z określonym dostępem, użyj opcji -perm:
$ find /root -type f -perm 0777
Do wyszukiwania ukryte pliki w katalogu wpisz:
$ znajdź ~ -wpisz f nazwa „.*”
Aby wyszukać pliki z bitami SGID, uruchom polecenie:
$znajdź. -perm /g=s
Do wyszukiwania plików z bitami SUID używamy:
$znajdź. -perm /u=s
Aby przeszukać tylko pliki wykonywalne, wpisz:
$znajdź. -perm /a=x
Ponadto możesz użyć polecenia find, aby znaleźć pliki tylko do odczytu:
$ find /root -perm /u=r
Aby wyszukać pliki konkretnego użytkownika, użyj następującego polecenia:
$znajdź. -użytkownik linuxtechi
Aby wyszukać pliki określonej grupy, użyj:
$znajdź. -grupa Apache
Jeśli chcemy wyszukać, którego rozmiar znamy, możemy użyć -size:
$ znajdź / -rozmiar -2M
Jeśli szukamy pliku, którego rozmiaru nie znamy, ale znamy jego przybliżoną wielkość, lub po prostu musimy dokonać selekcji plików w określonym przedziale wielkości, to możemy wpisać:
$ znajdź / -rozmiar +2M -rozmiar -5M
Polecenie find możesz wykorzystać przy wyszukiwaniu plików większych niż np. 50 mb:
$ znajdź / -rozmiar +50M
Na przykład chcemy zlokalizować wszystkie pliki, które zostały zmodyfikowane 8 dni temu. Możemy to osiągnąć za pomocą opcji „-mtime” w poleceniu find
Na przykład możemy znaleźć wszystkie pliki edytowane 8 dni temu. Odbywa się to za pomocą polecenia -mtime:
$ znajdź / -mczas 8
Możesz znaleźć pliki, które zostały dołączone 8 dni temu, używając opcji -atime:
$ znajdź / -atime 8
Aby znaleźć wszystkie puste pliki w systemie, wpisz:
$ znajdź / -wpisz f -pusty
I aby wyświetlić ich katalogi:
$ znajdź ~/ -wpisz d -pusty
Aby wyświetlić listę największych lub najmniejszych plików, używamy find w połączeniu z sort , a jeśli chcemy wyświetlić 3 „najwięcej”, używamy również head .
Aby wyprowadzić trzy pliki z bieżącego katalogu, wpisz:
$znajdź. -type f -exec ls -s () \; | sortuj -n -r | głowa -3
W podobny sposób możemy wyświetlić najmniejsze pliki w bieżącym katalogu:
$znajdź. -type f -exec ls -s () \; | sortuj -n | głowa -3
Polecenie find może oferować zaawansowane przypadki użycia. Na przykład możemy zmienić wszystkie uprawnienia 644 konkretnych plików na 777. W tym celu wykonujemy:
$ find / -type f -perm 644 -print -exec chmod 777 () \;
Wcześniej czy później może zaistnieć potrzeba usunięcia niektórych plików. Jeśli tak się stanie, wpisz:
$ find / -type f -name "linuxtechi.*" -exec rm -f () \;
Powyższe przykłady doskonale pokazują możliwości polecenia find, które może znacznie uprościć zadanie wyszukiwania plików.
Aktualizacja: 11.02.2019 Opublikowano: 25.07.2016
Najbardziej wszechstronną i funkcjonalną komendą wyszukiwania w systemie Linux jest znajdować. Ten artykuł jest ściągawką z przykładami jego użycia.
znajdować<где искать> <опции>
<где искать> — ścieżka do katalogu głównego, od którego należy rozpocząć wyszukiwanie. Na przykład znajdź /home/user - wyszukaj w odpowiednim katalogu. W przypadku bieżącego katalogu należy użyć kropki „.”.
<опции> — zestaw reguł według których przeprowadzane jest wyszukiwanie.
* domyślnie wyszukiwanie jest rekurencyjne. Aby przeszukać konkretny katalog, możesz skorzystać z opcji maksymalna głębokość.
Opcja | Opis |
---|---|
-nazwa | Szukaj według nazwy. |
-ja nazywam | Wyszukiwanie według nazwy bez uwzględniania wielkości liter. |
-typ |
Wyszukaj typ obiektu. Możliwe opcje:
|
-rozmiar | Rozmiar obiektu. Jest on podawany w blokach po 512 bajtów lub po prostu w bajtach (ze znakiem „c”). |
-mczas | Czas modyfikacji pliku. Wskazane w dniach. |
-mmin | Zmień czas w minutach. |
-czas | Czas ostatniego dostępu do obiektu w dniach. |
-jestem w | Czas ostatniego połączenia w minutach. |
-Czas | Ostatnio zmodyfikowany właściciela lub praw do obiektu w dniach. |
-cmin | Ostatni właściciel lub zmiana uprawnień w ciągu kilku minut. |
-użytkownik | Szukaj według właściciela. |
-Grupa | Według grupy. |
-trwała ondulacja | Z określonymi prawami dostępu. |
-głębokość | Wyszukiwanie powinno rozpoczynać się nie od katalogu głównego, ale od najgłębiej zagnieżdżonego katalogu. |
-maksymalna głębokość | Maksymalna głębokość wyszukiwania w katalogach. -max głębokość 0 - szukaj tylko w bieżącym katalogu. Domyślnie wyszukiwanie jest rekurencyjne. |
-suszona śliwka | Nie obejmuje wymienionych katalogów. |
-uchwyt | Nie przechodź do innych systemów plików. |
-wyrażenie regularne | Według nazwy z wyrażeniem regularnym. |
-typ wyrażenia regularnego<тип> | Typ wyrażenia regularnego. |
-L | Pokazuje zawartość dowiązań symbolicznych (dowiązań symbolicznych). |
-pusty | Szukaj pustych katalogów. |
-usuwać | Usuń to, co zostało znalezione. |
-ls | Wyjście jako ls -dgils |
-wydrukować | Pokaż, co znaleziono. |
-drukuj0 | Ścieżka do znalezionych obiektów. |
-wykon<команда> {} \; | Wykonaj polecenie na znalezionym. |
-OK | Wyświetl monit przed wykonaniem -exec. |
Pełny zestaw bieżących opcji można uzyskać za pomocą polecenia znaleźć człowieka.
znajdź / -nazwa „pliku.txt”
* W w tym przykładzie wyszuka plik o nazwie plik.txt na wskroś system plików zaczynając od korzenia / .
Wyszukiwanie pliku według części jego nazwy:
znajdź / -nazwa "*.tmp"
* to polecenie wyszuka wszystkie foldery lub pliki w katalogu głównym /, kończąc na .tmp
Znajdź wszystkie pliki lub foldery zaczynające się od sesja_ i zakończ płyta CD
znajdować . -name "sess_*" -a -name "*cd"
* -A: logiczne ORAZ, -o: logiczne LUB.
1. Wyszukaj pliki, które zmieniły się określoną liczbę dni temu:
znajdować . -wpisz f -mczas +60
* to polecenie znajdzie pliki, które zostały zmienione ponad 60 dni temu.
2. Wyszukaj pliki za pomocą nowsza. Ta opcja dostępny od wersji 4.3.3 (można go wyświetlić za pomocą polecenia znajdź --wersję).
a) data zmiany:
znajdować . -wpisz f -newermt "2019-11-02 00:00"
* pokaże wszystkie pliki, które uległy zmianie od 11.02.2019 o godzinie 00:00.
znajdować . -type f -newermt 31.10.2019 ! - nowszy 2019-11-02
* znajdzie wszystkie pliki, które zostały zmienione pomiędzy 31.10.2019 a 11.01.2019 (włącznie).
b) data złożenia wniosku:
znajdować . -type f -newerat 2019-10-08
* wszystkie pliki dostępne od 10.08.2019.
znajdować . -type f -newerat 2019-10-01 ! - nowość 2019-11-01
* wszystkie pliki udostępnione w październiku.
c) data powstania:
znajdować . -typ f -newerct 2019-09-07
znajdować . -type f -newerct 2019-09-07 ! -newerct „2019-09-09 07:50:00”
* pliki utworzone od 09.07.2019 00:00:00 do 09.09.2019 07:50
Wyszukaj tylko pliki w bieżącym katalogu i wszystkich jego podfolderach:
* F— wyszukaj tylko pliki.
Szukamy wszystkiego po prawej stronie do czytania i pisania:
znajdź / -perm 0666
Znajdujemy pliki, do których dostęp ma tylko właściciel:
znajdź / -perm 0600
find / -type f -exec grep -i -H "treść" () \;
* w tym przykładzie przeprowadzane jest wyszukiwanie rekursywne dla wszystkich plików w katalogu / i wyświetlona zostanie lista tych zawierających ciąg treść.
find /data -type f -printf "%TY-%Tm-%Td %TT%p\n" | sortuj -r
* polecenie znajdzie wszystkie pliki w katalogu /dane, doda datę modyfikacji do nazwy i posortuje dane według nazwy. W rezultacie otrzymuję, że pliki zostaną zapisane w kolejności, w jakiej zostały zmienione.
znajdź /home/user/* -type d -exec chmod 2700 () \;
* w tym przykładzie przeszukujemy wszystkie katalogi ( wpisz d) w katalogu /dom/użytkownik i ustanowić dla nich prawa 2700 .
Zespół znajdować wygodny w użyciu automatyczne usuwanie nieaktualne pliki.
Otwórz zadanie cron do edycji:
I dodaj:
0 0 * * * /bin/find /tmp -mtime +14 -exec rm () \;
* w tym przykładzie usuwamy wszystkie pliki i foldery z katalogu /tmp, setne są starsze 14
dni. Zadanie uruchamiane jest codziennie o godz 00:00
.
* Pełna ścieżka Do Plik wykonywalny znajdź za pomocą polecenia które znaleźć- w różnych systemach UNIX może znajdować się w różnych miejscach.
Linux ma bardzo potężne i przydatne polecenie aby wyszukać pliki - polecenie znajdować. Posiada wiele opcji wyszukiwania plików, jednak czasami sprawia trudności początkującym, głównie ze względu na swoją składnię.
Najpierw spójrzmy na prosty przykład użycia polecenia find do wyszukiwania na komputerze plików o nazwie config. Będziemy szukać plików konfiguracyjnych zaczynając od katalogu głównego /. Aby to zrobić, musisz uruchomić polecenie jako root, aby mieć wystarczające uprawnienia, w przeciwnym razie otrzymasz komunikat „Odmowa uprawnień”. Uruchommy więc polecenie:
Znajdź / -nazwa konfiguracji -print
Polecenie oznacza: wyszukaj pliki o nazwie config (-name config), zaczynając od katalogu / (pierwszy parametr polecenia find) i wypisz nazwy plików na ekran (argument -print). Zwracam uwagę, że wyszukiwanie jest rekurencyjne, to znaczy podczas wyszukiwania przeszukiwane są wszystkie podkatalogi. Jak widać, wszystko jest proste. Przyjrzyjmy się teraz składni polecenia i przejdźmy do przeglądu jego głównych argumentów.
Ogólna składnia polecenia find, które można znaleźć w przewodnik referencyjny, może nie wydawać się całkowicie proste, więc dam ci łatwiejszy do odczytania:
znajdź [ścieżka] [opcje] [kryteria wyszukiwania] [działania na plikach]
Ścieżka wyszukiwania może być ścieżką bezwzględną lub względną albo listą ścieżek oddzielonych spacją.
Opcje polecenia Znajdź są wyświetlane rozpoczynające się od znaku „-”, po którym następuje nazwa opcji. Spójrzmy na główne opcje.
Polecenie find może mieć wiele kryteriów wyszukiwania (zwanych także testami). Każde kryterium reprezentuje konkretny warunek testowy, który zwraca wartość true lub false. Można to porównać do warunków instrukcji if w programowaniu. Gdy polecenie find przetwarza każdy plik, sprawdza po kolei każde kryterium i jeśli następne kryterium zwróci wartość false, polecenie find przechodzi do następnego pliku. Polecenie find ma całkiem sporo kryteriów, rozważymy tylko kilka z nich.
- czas N | Plik był ostatnio otwierany N dni temu. |
-mtime N | Plik był ostatnio modyfikowany N dni temu. |
-wzór imienia | Nazwa pliku (szablon nazwy) bez określenia ścieżki. Zaleca się zawsze ująć wzór w cudzysłów. |
-nowszy inny_plik | Plik został zmodyfikowany później niż inny_plik. |
-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. |
-typ C | Typ pliku C. Najczęściej używane wartości dla C: d - katalog, f - plik. |
-user Nazwa_użytkownika | Właścicielem pliku jest użytkownik o nazwie UserName. |
Znajdź w bieżącym katalogu zwykłe pliki (nie katalogi), których nazwy zaczynają się od znaku „~”.
Znajdować. -type f -name "~*" -print
Znajdź pliki w bieżącym katalogu, które zostały zmodyfikowane później niż file.bak .
Znajdować. -nowszy plik.bak -typ f -print
Kryteria można łączyć za pomocą operatorów. Poniżej znajdują się operatory w kolejności malejącej.
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.
Znajdź pliki w bieżącym katalogu, które zaczynają się od symbolu „~” lub „temp” i są zwykłymi plikami (-typ f), a nie katalogami.
Znajdować. \(-nazwa "~*" -lub -nazwa "temp*" \) -type f -print
Znajdź w bieżącym katalogu (bez przetwarzania podkatalogów - -maxdeph 1) zwykłe pliki (-plik f) większe niż 600 megabajtów i mniejsze niż 1 gigabajt (-rozmiar) lub pliki, których nazwa kończy się na „.mpeg” (-nazwa).
Znajdować. -max głębokość 1 \(\(-rozmiar +600M -i -rozmiar -1G \) -lub -nazwa "*.mpeg" \) -i -wpisz f
Po wykonaniu polecenia find można wykonywać różne działania na znalezionych plikach. Spójrzmy na główne.
W wykonywanych poleceniach możesz użyć parametru () jako argumentu, który zostanie zastąpiony ścieżką do bieżącego pliku.
Znajdź w bieżącym katalogu zwykłe pliki większe niż 1000 bajtów i uruchom na nich polecenie ls -dils (akcja ls).
Znajdować. -rozmiar +1000c -typ f -ls
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).
Znajdować. -name "~*" -type f -ok rm () \;
W tym artykule omówiliśmy bardzo ważne i przydatne Komenda Linuksa find , który daje niemal nieograniczone możliwości wyszukiwania plików według wielu kryteriów i wzorców. A za pomocą poleceń (akcji) możesz wyszukiwać pliki i wykonywać na nich dowolne operacje.
Dzisiaj przyjrzymy się kilku najpopularniejszym sposobom wyszukiwania plików w systemie Linux za pomocą terminala.
1) znajdź: Aby wyszukać pliki z wiersz poleceń możesz użyć polecenia „znajdź”. To polecenie ma następującą składnię:
znajdź akcję kryteriów ścieżki
"ścieżka" - Sekcja określająca katalog wyszukiwania. Jeśli nic nie zostanie określone, wyszukiwanie zostanie przeprowadzone w bieżącym katalogu.
„kryteria” - Opcje wyszukiwania.
"działanie" - Opcje wpływające lub kontrolujące stan wyszukiwania, np.
2) zlokalizuj: Zespół "Znajdź" Jest to alternatywa dla polecenia „find -name”. Polecenie find wyszukuje pliki w wybranej części systemu plików, a proces może nie być bardzo szybki. Z drugiej strony polecenielocate wyszukuje pliki w specjalnie utworzonej w tym celu bazie danych /var/lib/locatedb, która jest znacznie szybsza. Aby zaktualizować bazę danych użyj polecenia zaktualizowano.
3) gdzie jest: “gdzie jest" zwraca lokalizację kodu (opcja -b), stron podręcznika (opcja -m) i plików źródłowych (opcja -s) dla określonego polecenia. Jeśli nie określono żadnych opcji, wszystkie dostępne informacje. To polecenie jest szybsze niż „ znajdować" ale mniej kompletne.
4) które: Zespół " Który" przeszukuje wszystkie ścieżki wymienione w zmiennej PATH dla określonego polecenia.
5) wpisz:
Wywołany bez opcji pokazuje, jak nazwy będą interpretowane
gdy jest używany jako nazwa polecenia. Jeśli opcja jest używana -A, zespół typ wyświetla listę wszystkich katalogów, w których znajduje się plik wykonywalny
odpowiednia nazwa. Na liście znajdują się także aliasy i funkcje
chyba że określono opcję -P. DO
skrót polecenia nie jest dostępny, jeśli określono tę opcję -A. Zespół typ zwraca 0,
jeśli zostanie znaleziony co najmniej jeden z argumentów, a 1 w przeciwnym razie.
Strażnik
Explo.ru - wszystko o turystyce i rekreacji: wycieczki last minute i wycieczki do Turcji, Egiptu,
Prawdopodobnie znasz ten problem: istnieje plik i nie pamiętasz, gdzie go umieściłeś.
W tym przypadku wygodne jest polecenie find. Jak tego użyć? Oczywiście to narzędzie ma dużą stronę podręcznika, ale przyjrzymy się kilku typowym przypadkom. Przejrzyj drzewo katalogów, zaczynając od bieżącego i znajdź plik losefile.txt:
Jeśli przeszukujesz duże drzewo katalogów, polecenie find może działać dość wolno. Czasami wygodniej jest użyć polecenia zlokalizowania. Nie szuka pliku bezpośrednio w systemie plików, ale przegląda jego bazę danych. Ta metoda jest znacznie szybsza, ale baza danych może stać się nieaktualna. W niektórych dystrybucjach ta baza danych jest modyfikowana każdej nocy. Od czasu do czasu można ręcznie uruchomić komendę updateb, aby ją zmodyfikować. zlokalizuj wyszukiwanie podciągów:
Liczba dozwolonych błędów pisowni zależy od długości nazwy pliku, ale można ją ustawić za pomocą opcji -t. Aby zezwolić na maksymalnie 2 błędy i użyć znaku specjalnego, po prostu wpisz:
Czasami trzeba uzyskać przegląd drzewa katalogów. Załóżmy na przykład, że otrzymałeś nową płytę CD-ROM i chciałbyś wiedzieć, co się na niej znajduje. Możesz po prostu użyć ls -R . Osobiście wolę jedną z następujących metod zwiększania czytelności. Drzewo (sunsite.unc.edu/pub/Linux/utils/file/tree-1.2.tgz) wyświetla drzewo katalogów w formie diagramu.
Lub użyj starego, dobrego znaleziska. Wersja Gnu find, zwykle dostarczana z Linuksem, ma możliwość zmiany formatu wyjściowego w celu wyświetlenia na przykład nazwy pliku i jego rozmiaru:
Możesz użyć małej procedury Perla, która działa z poleceniem ls, które robi podobne rzeczy. Można go pobrać stąd: lsperl.gz. Istnieje wiele innych narzędzi do przeglądania drzew katalogów, ale w większości przypadków są one wystarczające.
Standardowe narzędzia do wyszukiwania ciągów tekstowych w plikach to grep/egrep do wyszukiwania wyrażeń regularnych i fgrep do wyszukiwania ciągów tekstowych. Aby wyszukać wyrażenie we wszystkich plikach w bieżącym katalogu, po prostu wpisz:
Jeśli masz trudności z zapamiętaniem tych długich poleceń, użyj małego skryptu, który można pobrać stąd: grepfind.gz. Skrypt usuwa również znaki niedrukowalne z ciągu wyszukiwania, aby zapobiec przypadkowemu otrzymaniu pliku binarnego w wyniku wyszukiwania egrep.
Bardzo ciekawy program szukaj - zgadzam się . Agrep działa zasadniczo jak egrep, ale umożliwia wyszukiwanie błędów ortograficznych. Aby wyszukać wyrażenie i zezwolić na maksymalnie 2 błędy ortograficzne, wpisz:
Następnie możesz wyszukać ciąg znaków we wszystkich plikach, które były wcześniej zaindeksowane
spojrzenie -i -2 "wyrażenie wyszukiwania" |
spojrzenie - pozwala również na błędy ortograficzne (takie jak agrep), a -2 wskazuje, że dozwolone są dwa błędy. podgląd dostępny pod adresem