Polecenie find pomaga nam znaleźć konkretny plik w katalogu. Służy do wyszukiwania listy plików dla różnych warunków, takich jak uprawnienia, własność użytkownika, modyfikacja, data/godzina, rozmiar i inne.
W systemach uniksowych i innych systemach operacyjnych polecenie find jest narzędziem wiersza poleceń, które wyszukuje pliki na podstawie kilku formatów określonych przez użytkownika i albo wypisuje nazwę ścieżki wszystkich pasujących obiektów, albo, jeśli wymagane są inne działania, implementuje tę akcję na wszystkie dopasowane obiekty.
Rozpoczyna wyszukiwanie od żądanej lokalizacji, a następnie rekurencyjnie przechodzi przez katalogi (węzły) struktury hierarchicznej (zwykle drzewa). Polecenie find umożliwia wyszukiwanie i przeglądanie różnych systemów partycji plików należących do jednego lub większej liczby urządzeń pamięci masowej w katalogu początkowym.
Format wyszukiwania zawiera wzorzec dopasowywania do nazwy pliku lub zakres czasu dopasowywania do czasu modyfikacji lub czasu dostępu do pliku. Polecenie find domyślnie wyświetla listę wszystkich plików w bieżącym katalogu roboczym. Jednakże użytkownicy mogą ograniczyć wyszukiwanie do żądanego maksymalnego poziomu w katalogu początkowym.
Powiązane programy lokalizujące wykorzystują indeksowaną bazę danych plików uzyskaną za pomocą polecenia fine, aby zapewnić szybszą technikę przeszukiwania całego systemu plików według nazwy.
Narzędzie find jest domyślnie dostarczane z większością plików Dystrybucje Linuksa , więc nie musimy instalować żadnego dodatkowego pakietu. Jest to jedno z najważniejszych i używanych poleceń programu Linuksa system.
find
Obie opcje określają, w jaki sposób find powinien uwzględniać dowiązania symboliczne. Domyślną naturą nigdy nie jest poszukiwanie dowiązań symbolicznych. Flaga, tj. -L , doprowadzi do znalezienia dowiązań symbolicznych. Flaga, tj. -H , będzie po prostu realizować dowiązania symboliczne, kontynuując argumenty wiersza poleceń. Flagi są wymienione w standardzie POSIX dla polecenia find. Podstawowym rozszerzeniem jest flaga, tj. -P , aby jawnie wyłączyć następujące dowiązanie symboliczne.
Przynajmniej ścieżka musi przewidywać wyrażenie. Polecenie find może wewnętrznie interpretować symbole wieloznaczne, a polecenia muszą być uważnie cytowane, aby zarządzać manipulacją powłoki.
Komponenty wyrażeń są izolowane przez granicę argumentów wiersza poleceń, ogólnie oznaczaną jako białe znaki w składni powłoki. Są one rozpatrywane od lewej do prawej strony. Mogą zawierać komponenty logiczne, takie jak OR i AND, a także predykaty (akcje i filtry). GNU find zawiera kilka innych funkcji, o których nie wspomina POSIX.
Do określenia katalogu używane są następujące symbole:
(.) : Dla nazwy bieżącego katalogu
(/) : Dla katalogu głównego
Krótka historia polecenia Znajdź
Polecenie find wystąpiło w wersji 5 Uniksa jako element pliku Warsztat programisty projektu i został określony przez Dicka Haighta z cpio, które zostały opracowane do wspólnego użycia.
Pierwotnie implementacja GNU polecenia find była określona przez Erica Deckera . Później został opracowany przez Davida MacKenziego i Tima Wooda , I Jay'a Pletta . Ponadto komenda find została przeniesiona do systemu operacyjnego IBM i.
mvc java
Predykaty
Powszechnie stosowane kolory podstawowe to:
Znajdź wartości domyślne implementacji opcji -print w przypadku, gdy warunki są prawdziwe, jeśli wyrażenie nie wykorzystuje opcji -ok, -exec, -print lub -print0.
Operatorzy
Operatory ulepszają wyrażenia poleceń find. Są one wymienione w kolejności malejącego pierwszeństwa:
- wyrażenie1 wyrażenie2 (lub wyrażenie1 -a wyrażenie2 : AND. wyrażenie2 nie jest obliczane, jeśli wyrażenie1 ma wartość fałszywą.
- wyrażenie1 -o wyrażenie2 : LUB. wyrażenie2 nie jest obliczane, jeśli wyrażenie1 ma wartość true.
Przykłady polecenia find
Zobaczmy następujące przykłady polecenia find:
- Znajdź pliki według nazwy
- Znajdź pliki według typu
- Znajdź nowsze pliki
- Znajdź i usuń plik
- Znajdź katalog
- Znajdź pliki według czasu modyfikacji
- Znajdź pliki według pozwolenia
- Znajdź i zamień pliki
- Znajdź tekst w wielu plikach
Znajdź pliki według nazwy
Możemy przeszukać wszystkie pliki kończące się rozszerzeniem „.txt”. Aby to zrobić, wykonaj poniższe polecenie:
find . -name '*.txt'
Powyższe polecenie wyświetli listę wszystkich plików tekstowych z bieżącego katalogu roboczego. Rozważ poniższe dane wyjściowe:
Z powyższego wyniku wynika, że po wydaniu polecenia find zostaną wyświetlone wszystkie pliki z rozszerzeniem „.txt”.
Znajdowanie plików według typu
Parametr „-type” służy do określenia typu pliku.
Niektóre typy plików są następujące:
- f: zwykły plik
- d: katalog
- l: dowiązania symboliczne
- c: urządzenia znakowe
- b: blokuj urządzenia
Rozważ poniższe polecenie:
find . -type d -name '*.bak'
Powyższe polecenie wyświetli listę wszystkich katalogów mających rozszerzenie „.bak”. Rozważ poniższe dane wyjściowe:
Z powyższych wyników wynika polecenie „find . -type d -name '*.bak' wyświetla wszystkie katalogi kończące się na '.bak'.
Znajdź nowsze pliki
Parametr „-newer” pomaga w wyszukiwaniu plików nowszych niż wspomniany plik. Rozważ poniższe polecenie:
find . -newer msg.txt
Powyższe polecenie wyświetli wszystkie pliki nowsze niż „msg.txt” z bieżącego katalogu roboczego. Rozważ poniższe dane wyjściowe:
ciąg do znaku
Z powyższego wynika, że wszystkie wyświetlone pliki są nowsze niż plik „msg.txt”.
Znajdź i usuń plik
Opcja „-delete” służy do usuwania określonego pliku. Musimy zachować szczególną ostrożność podczas korzystania z tego polecenia, ponieważ nie ma opcji cofania, jeśli zostanie ono wykonane. Rozważ poniższe polecenie:
find . -name Demo.txt -delete
Powyższe polecenie usunie plik „Demo.txt” z bieżącego katalogu roboczego. Rozważ poniższe dane wyjściowe:
Znajdź katalog
Do znalezienia katalogu używana jest opcja „type -d”. Rozważ poniższe polecenie:
find . type -depth -name Newdirectory
Powyższe polecenie znajdzie lokalizację „Nowy katalog”. Rozważ poniższe dane wyjściowe:
Znajdź pliki według czasu modyfikacji
Do wyszukiwania plików poprzez modyfikację używana jest opcja „-mtime”, po której następuje liczba dni. Liczba dni może być dodatnia lub ujemna. Wartość ujemna będzie używana mniej niż -1 jest używane dla ostatniego dnia i podobnie +1 znajdzie plik dla więcej niż jednego dnia temu. Rozważ poniższe polecenie:
find ./Newdirectory -mtime -1
Powyższe polecenie znajdzie pliki zmodyfikowane w ciągu ostatniego dnia. Rozważ poniższe dane wyjściowe:
Znajdź pliki według pozwolenia
Opcja „-perm” służy do wyszukiwania plików za pozwoleniem. Wykonaj polecenie find z opcją „-perm” i przekaż wymaganą wartość. Rozważ poniższe polecenie:
find ./ -perm 777
Powyższe polecenie wyświetli listę plików z określonego katalogu, które każdy może przeczytać, zapisać i wykonać.
Znajdź i zamień pliki
Aby znaleźć i zamienić pliki, musimy połączyć polecenie find z poleceniem sed. Aby operować na plikach, użyj opcji „-exec” z poleceniem find. Rozważ poniższe polecenie:
find ./Newdirectory -type f -exec sed -i 's/find/replace/g' {} ;
z powyższego polecenia określone wystąpienie zostanie zastąpione. Rozważ poniższe dane wyjściowe:
Znajdź tekst w wielu plikach
Możemy wykonać inną kombinację polecenia find z poleceniem grep, aby znaleźć tekst z różnych plików. Rozważ poniższe polecenie:
find ./Newdirectory -type f -name '*.txt' -exec grep 'demo' {} ;
Powyższe polecenie znajdzie linie zawierające tekst „demo” ze wszystkich plików tekstowych w katalogu „Nowy katalog”. Rozważ poniższe dane wyjściowe:
data lokalna
Z powyższego wyniku możemy zobaczyć linie zawierające tekst „demo”.
Przeszukaj każdy katalog
$ find / -name file1 -type f -print
Powyższe polecenie wyszukuje wszystkie katalogi zwykłego pliku o tytule plik1 i wyświetla go na ekranie. Ogólnie rzecz biorąc, wyszukiwanie plików w ten sposób nie jest dobrym pomysłem. Może to zająć sporo czasu. Najlepiej więc wspomnieć o katalogu. Niektóre systemy operacyjne mogą montować systemy plików (dynamiczne), które nie są korzystne dla polecenia find. Bardziej skomplikowane nazwy plików zawierające znaki charakterystyczne dla powłoki mogą wymagać ujęcia w pojedynczy cudzysłów.