Linux FIND Polecenie z przykładami

Czy wiesz, ile plików zawiera świeża instalacja Linuksa(Linux) ? Jeśli używasz PopOS! Na przykład dystrybucja Linuksa(Linux distribution) zawiera ponad 31 000 plików. Dzieje się tak, zanim zaczniesz tworzyć dokumenty, przechowywać muzykę, pobierać pliki PDF(PDFs) lub porządkować zdjęcia.

Z tego powodu znalezienie odpowiedniego pliku lub folderu w systemie Linux(Linux) , gdy jest to potrzebne, staje się wyzwaniem. W tym artykule dowiesz się, jak używać polecenia Linux FIND , a my przedstawimy Ci wszystkie możliwe przykłady.

Składnia polecenia FIND systemu Linux(Linux FIND Command Syntax)

Składnia odnosi się do tego, jak słowa lub polecenia są połączone. Tak(Just) jak zwykłe zdanie może stać się nonsensem przez zwykłe przetasowanie słów, tak polecenia mogą zakończyć się niepowodzeniem, jeśli nie są używane we właściwej składni.

znajdź [ścieżka] [warunki] [działania](find [path] [conditions] [actions])

Oto, co to oznacza:

find – inicjuje narzędzie Find w systemie Linux(Linux)

ścieżka(path ) – gdzie szukać

warunki(conditions ) – argumenty, które chcesz zastosować do wyszukiwania

działania(actions ) – co chcesz zrobić z wynikami

Prosty przykład wykorzystujący wszystkie trzy wygląda następująco:

znajdować . -name file-sample.rtf -print(find . -name file-sample.rtf -print)

Jak się domyślasz, znajdzie to nazwę pliku file-sample.rtf(file-sample.rtf)

Ścieżka z kropką ( . ) mówi find, że powinien przeszukać bieżący katalog i wszystkie znajdujące się w nim katalogi. 

Warunek -name mówi find, że ma pobrać plik o tej konkretnej nazwie.

Akcja -print mówi FIND, aby pokazał wyniki na ekranie.

Okres i -print są wartościami domyślnymi dla polecenia find. Więc nadal będzie robić to samo, jeśli ich nie użyjesz. Tak więc find -name file-sample.rtf da ci te same wyniki.

Linux ZNAJDŹ w innym katalogu(Linux FIND In Another Directory)

Możesz szukać w katalogu innym niż ten, w którym się znajdujesz. Po prostu(Just) wstaw ścieżkę do katalogu po FIND . Jeśli jesteś w katalogu głównym i wiesz, że plik znajduje się gdzieś w katalogu home/user , użyjesz:

find home/user -name file-sample.rtf

Jest to wciąż wyszukiwanie rekurencyjne, więc przejdzie przez każdy katalog w ramach user .

Linux ZNAJDŹ Przeszukaj wiele katalogów(Linux FIND Search Multiple Directories)

Jeśli chcesz przeszukiwać kilka katalogów na raz, po prostu wypisz je w poleceniu, oddzielone spacją.

find /lib /var /bin -name file-sample.rtf

Linux ZNAJDŹ bez rekurencji lub ograniczającej rekursji(Linux FIND with No Recursion or Limiting Recursion)

Gdybyś użył powyższego polecenia FIND na poziomie głównym, przejrzałby każdy katalog w systemie. Więc jeśli chcesz trzymać się tylko bieżącego katalogu, użyj opcji -maxdepth . Liczba po -maxdepth wskazuje, jak głęboko zagłębić się przed zatrzymaniem. 

Użycie -maxdepth 1 oznacza tylko ten katalog. 

find -name file-sample.rtf -maxdepth 1

Użycie -maxdepth 2 lub więcej oznacza przejście o wiele poziomów głębiej.

find -maxdepth 5 -name file-sample.rtf

Przykład symboli wieloznacznych ZNAJDŹ w systemie Linux(Linux FIND Wildcard Example)

Polecenie FIND używa gwiazdki ( * ) jako symbolu wieloznacznego. Użyj go dla dowolnej części nazwy, której nie jesteś pewien. Może być użyty w nazwie więcej niż jeden raz. Bez typu pliku jako części nazwy pliku wyniki będą również zawierać pasujące katalogi.

find home/user -name file*sample*

Linux ZNAJDŹ według typu Przykład(Linux FIND by Type Example)

Aby wyszukać tylko plik lub katalog, użyj opcji -type i odpowiedniego deskryptora. Jest ich kilka, ale najczęściej spotykane są pliki i katalogi:

f – plik

d – katalog

b – urządzenie blokujące

c – urządzenie znakowe

l – dowiązanie symboliczne

s – gniazdo

find home/user -name file*sample* -type d

Przykład w systemie Linux FIND bez uwzględniania wielkości liter(Linux FIND Case Insensitive Example)

W przeciwieństwie do Windows , Linux dba o to, czy litera jest wielka czy mała. Jeśli więc chcesz, aby wyszukiwał zarówno File-Sample.rtf, jak(File-Sample.rtf) i file-sample.rtf, użyj opcji -iname .

find home/user -iname File-Sample.rtf

Linux ZNAJDŹ kilka przykładowych plików(Linux FIND Several Files Example)

Załóżmy, że chcesz znaleźć wersje .rtf i .html pliku. Można to zrobić w jednym poleceniu za pomocą operatora -o (lub). (-o)W niektórych dystrybucjach może być konieczne umieszczenie nazw w nawiasach, na przykład ( -name file-sample.rtf -o -name file-sample.html )

find home/user -name file-sample.rtf -o -name file-sample.html

Linux ZNAJDŹ pliki, które nie pasują do nazwy(Linux FIND Files That Don’t Match a Name)

Być może wiesz, że istnieje wersja .html pliku, ale nie, jeśli istnieją inne. Możesz odfiltrować wersję .html z wyszukiwania za pomocą opcji -not .

find home/user -name file-sample* -not -name *.html

Linux ZNAJDŹ bez wyników błędów(Linux FIND Without Error Results)

W przypadku wyszukiwania bez przykładu rekursji zwróć uwagę, że zawiera listę wszystkich katalogów, w których nie można przeszukać, i poprawny wynik. To irytujące. Zatrzymajmy go przed pokazywaniem wszystkich tych katalogów „Odmowa uprawnień ”. (Permission)Połącz to z innym poleceniem terminala Linuksa(Linux terminal command) , grep. Możesz także użyć funkcji Find z grep, aby znaleźć pliki zawierające określone słowa(find files with specific words in them) .

find -maxdepth 5 -name file-sample.rtf 2>&1 | grep -v “Permission denied”

Rozłóżmy 2>&1 .

2 – reprezentuje stderr , który jest skrótem od standardowych błędów wyjściowych. 

1 – reprezentuje stdout , co jest skrótem od standardowego wyjścia

> – oznacza przekierowanie wyjścia znajdującego się po jego lewej stronie do tego, co znajduje się po jego prawej stronie.

& – oznacza poskładać.

Zatem 2>&1 oznacza, że ​​weź standardowe błędy i przekieruj je, a następnie umieść je razem ze standardowym wyjściem w jednym wyjściu.

Spójrzmy teraz na | grep -v “Permission denied” .

| (tzw. potok) – mówi Linuksowi(Linux) , aby przesyłał wyniki tego, co znajduje się po jego lewej stronie, do tego, co jest po jego prawej stronie. Jest karmiony komendą grep.

grep – to narzędzie do wyszukiwania tekstu. 

-v – nakazuje grepowi wyszukanie czegokolwiek, co nie pasuje do tekstu po lewej stronie -v. W tym przypadku oznacza to, że grep ma znaleźć tylko wszystko, co nie zawiera tekstu lub ciągu „ Odmowa uprawnień ”. (Permission)Tak więc grep pokaże tylko wyniki, których szukasz, oraz wszelkie błędy, które nie pasują do „ Odmowa uprawnień ”.(Permission)

Linux ZNAJDŹ według uprawnień Przykład(Linux FIND by Permissions Example)

Aby dobrze z tego korzystać, musisz nauczyć się uprawnień Linuksa(learn Linux permissions)

Wszystkie przykładowe pliki mają uprawnienia 664, z wyjątkiem jednego z uprawnieniami 775. Użyj opcji -perm , aby je znaleźć.

find Documents/ -name file-sample* -type f -perm 775

Linux ZNAJDŹ według rozmiaru Przykład(Linux FIND by Size Example)

Znajdowanie plików według rozmiaru jest przydatne, aby te ogromne pliki zapełniły się na dysku twardym. Użyj opcji -size, żądanego rozmiaru i jednego z następujących przyrostków. Jeśli nie jest użyty żaden przyrostek, -size domyślnie b . Aby znaleźć pliki równe lub większe niż określony rozmiar, umieść znak plus (+) przed rozmiarem.

M – Megabajty

G – Gigabajty

k – Kilobajty

b – bloki (512 bajtów – domyślnie)

c – bajty

w – słowa (dwa bajty razem)

find -size +500k

Linux ZNAJDŹ przez właściciela(Linux FIND by Owner)

Istnieją dwa sposoby znajdowania plików według właściciela. Jedna to nazwa użytkownika właściciela, a druga to nazwa grupy użytkownika. Aby znaleźć według nazwy użytkownika, użyj opcji -user , a następnie nazwy użytkownika. Aby znaleźć według grupy użytkowników, użyj -group , a następnie nazwy grupy..

find -user(find -user groupname ) nazwa grupy lub find -user nazwa użytkownika(find -user username)

Linux ZNAJDŹ pliki według ostatnio zmodyfikowanego przykładu(Linux FIND Files by Last Modified Example)

Aby znaleźć pliki, które zostały zmodyfikowane lub edytowane w ciągu ostatnich X dni, użyj opcji -mtime(-mtime) , po której następuje liczba. Umieszczenie znaku minusa ( ) przed liczbą spowoduje, że wszystko zostanie zmienione w ciągu tych wielu dni wcześniej. Znak plus ( + ) oznacza w ciągu tych wielu dni wcześniej. 

find -name “file-sample*” -mtime +5 (greater than 5 days ago)

find -name “file-sample*” -mtime -5 (less than 5 days ago)

Aby znaleźć według ostatniej modyfikacji w minutach, użyj opcji -mmin, po której następuje liczba minut. Użyj + i – jak powyżej.

find -name “file-sample*” -mmin -5

find -name “file-sample*” -mmin +5

Linux Znajdź pliki według czasu ostatniego dostępu — przykład(Linux FIND Files by Last Accessed TIme Example)

Opcja używana do wyszukiwania plików na podstawie czasu ich ostatniego otwarcia to -atime dla dni i -amin dla minut. Podążaj za nim z liczbą dni lub minut do cofnięcia się i użyj znaku + i – jako większe niż i mniejsze niż.

find -name “file-sample*” -atime -5

find -name “file-sample* -amin -5

Połącz FIND z innymi poleceniami Linuksa(Combine FIND with Other Linux Commands)

Powyżej znajduje się jeden przykład użycia find z poleceniem grep i możesz go użyć z wieloma innymi. Widać, że używanie poleceń wyszukiwania i innych może być bardzo wydajne i pozwala zaoszczędzić dużo czasu. Wyobraź sobie(Imagine) , że musisz usunąć kilka plików określonego typu. Zamiast szukać w eksploratorze plików, po prostu stwórz odpowiednie polecenie i zrobisz to w kilka sekund. Jak teraz użyjesz polecenia find?



About the author

inżynier audiofilski i specjalista ds. produktów audio z ponad 10-letnim doświadczeniem. Specjalizuję się w tworzeniu wysokiej jakości głośników muzycznych i słuchawek od początku do końca. Jestem ekspertem w rozwiązywaniu problemów z dźwiękiem oraz projektowaniu nowych głośników i systemów słuchawkowych. Moje doświadczenie wykracza poza samo tworzenie dobrych produktów; Mam również pasję pomagania innym w byciu jak najlepszymi, czy to poprzez edukację, czy pracę społeczną.



Related posts