aktualizacja: 30/11/2020 przez komputer Hope

w systemach operacyjnych Linux polecenie find może być używane do wyszukiwania plików i katalogów na komputerze. Aby kontynuować, wybierz link z poniższej listy lub przejrzyj każdą sekcję w kolejności.

Uwaga

aby użyć find, rozpocznij od otwarcia sesji terminala, aby uzyskać dostęp do wiersza poleceń.

podstawowa funkcjonalność find

uruchamianie find bez żadnych opcji tworzy listę KAŻDEGO pliku i katalogu w katalogu roboczym i pod nim., Na przykład, jeśli twoim katalogiem roboczym jest /home/hope/Documents, uruchomienie find wyświetla następujący plik:

  • każdy plik w /home/hope/Documents.
  • każdy podkatalog w /home/hope / Documents.
  • każdy plik w każdym z tych podkatalogów.

zobaczmy go w akcji., Najpierw sprawdźmy nasz katalog roboczy za pomocą polecenia pwd:

pwd
/home/hope/Documents

Teraz uruchom find bez żadnych opcji:

find

w tym przykładzie widzimy w sumie dziesięć plików i cztery podkatalogi w I pod nimi nasz folder dokumentów.

zauważ, że wyjście zaczyna się od pojedynczej kropki, która reprezentuje katalog roboczy., Uruchamianie find bez opcji jest takie samo jak określanie, że wyszukiwanie powinno rozpocząć się w katalogu roboczym, tak:

find .

powyższy przykład jest „właściwym” sposobem użycia find. Jeśli próbujesz użyć go na innym Uniksopodobnym systemie operacyjnym, takim jak FreeBSD, podanie katalogu jest wymagane. Dobrą praktyką jest używanie tej formy polecenia.,

określanie miejsca wyszukiwania

aby wyświetlić tylko listę plików i podkatalogów znajdujących się w katalogu/home/hope/Documents/images, podaj pierwszy argument polecenia jako:

find /home/hope/Documents/images

zauważ, że pełna ścieżka jest również wyświetlana w wynikach.,

Jeśli naszym katalogiem roboczym jest/home/hope/Documents, możemy użyć następującego polecenia, które znajduje te same pliki:

find ./images

ale tym razem wynik odzwierciedla początkową lokalizację wyszukiwania i wygląda tak:

domyślnie wyszukiwanie wygląda w każdym podkatalogu Twojej lokalizacji początkowej. Jeśli chcesz ograniczyć liczbę poziomów podkatalogu do wyszukiwania, możesz użyć opcji-maxdepth z liczbą.

na przykład podanie-maxdepth 1 przeszukuje tylko katalog, w którym zaczyna się wyszukiwanie., Jeśli jakieś podkatalogi zostaną znalezione, są one wymienione, ale nie przeszukiwane.,

find . -maxdepth 1
../images./bigfiles.txt./gimp-2.8.16.tar.bz2./hp-fanfic./archlinux-2016.02.01-dual.iso

określanie-maxdepth 2 przeszukuje katalog i jeden podkatalog w głębi:

find . -maxdepth 2

określanie-maxdepth 3 przeszukuje jeden poziom głębiej:

find . -maxdepth 3

wyszukiwanie po nazwie

aby ograniczyć wyniki wyszukiwania tylko do plików i katalogów, które mają określoną nazwę, użyj opcji-name i umieść nazwę w cudzysłowie:

find . -name "picard.jpg"
./images/memes/picard.jpg

Możesz również używać symboli wieloznacznych jako części pliku nazwisko., Na przykład, aby znaleźć wszystkie pliki, których nazwa kończy się .jpg, możesz użyć gwiazdki, aby reprezentować resztę nazwy pliku. Po uruchomieniu polecenia powłoka zmieni nazwę pliku na wszystko, co pasuje do wzorca:

find . -name "*.jpg"
./images/hp/snape.jpg./images/hp/harry.jpg./images/memes/winteriscoming.jpg./images/memes/picard.jpg

zauważ, że nasze polecenie nie wyświetliło listy plików, których rozszerzenie (w tym przypadku JPG) jest pisane wielkimi literami. Dzieje się tak, ponieważ w przeciwieństwie do innych systemów operacyjnych, takich jak Microsoft Windows, Nazwy plików w Linuksie uwzględniają wielkość liter.,”>

aby wypisać tylko katalogi i pominąć nazwy plików, podaj-type d:

find . -type d
../images./images/hp./images/memes./hp-fanfic

znajdowanie plików na podstawie rozmiaru

na przykład, aby znaleźć pliki, które są „większe niż 50 kilobajtów”, użyj-size +50k:

find . -size +50k
./images/memes/winteriscoming.jpg./gimp-2.8.16.tar.bz2./archlinux-2016.02.01-dual.iso

dla plików”większych niż 10 megabajtów”, użyj-rozmiar +10m:

find . -size +10M
./gimp-2.8.16.tar.bz2./archlinux-2016.02.01-dual.iso

dla plików”większych niż 1 gigabajt”, użyj-rozmiar +1g:

find . -size +1G
./archlinux-2016.02.01-dual.iso

dla plików w określonym zakresie rozmiarów, użyj opcji dwóch rozmiarów., Na przykład, aby znaleźć pliki „większe niż 10 megabajtów, ale mniejsze niż 1 gigabajt”, określ-size +10m-size-1g:

find . -size +10M -size -1G
./gimp-2.8.16.tar.bz2

znajdowanie plików na podstawie modyfikacji, dostępu lub zmiany statusu

opcja-mtime ogranicza wyszukiwanie przez ile dni od zawartości pliku zmodyfikowany. Aby określić dni w przeszłości, użyj liczby ujemnej., Na przykład, aby znaleźć tylko te pliki, które zostały zmodyfikowane w ciągu ostatnich dwóch dni (48 godzin temu), użyj opcji-mtime -2:

find . -mtime -2

opcja-mmin robi to samo, ale pod względem minut, a nie dni. Na przykład, polecenie to pokazuje tylko pliki zmodyfikowane w ciągu ostatnich pół godziny:

find . -mmin -30

podobną opcją jest-ctime, która sprawdza, kiedy plik został ostatnio zmieniony, mierzony w dniach. Zmiana stanu to zmiana metadanych pliku. Na przykład zmiana uprawnień pliku to zmiana stanu.,

opcja-cmin wyszukuje zmianę stanu mierzoną w minutach.

Możesz również wyszukać, kiedy plik był ostatnio przeglądany — innymi słowy, kiedy jego zawartość była ostatnio przeglądana. Opcja-atime służy do wyszukiwania plików na podstawie ich ostatniego czasu dostępu, mierzonego w dniach.

opcja-amin wykonuje to samo ograniczenie wyszukiwania, ale mierzone w minutach.

przekierowanie wyjścia do pliku tekstowego

jeśli wykonujesz bardzo duże wyszukiwanie, możesz zapisać wyniki wyszukiwania w pliku, aby można było wyświetlić wyniki później., Możesz to zrobić, przekierowując wynik wyszukiwania do pliku:

find . -iname "*.jpg" > images.txt

Możesz następnie otworzyć wyniki w edytorze tekstu lub wydrukować je za pomocą polecenia cat.

cat images.txt

Alternatywnie, możesz skierować swoje wyjście do polecenia tee, które wyświetla wyjście na ekran i zapisuje je do pliku:

find . -size +500M | tee bigfiles.txt
./archlinux-2016.02.01-dual.iso
cat bigfiles.txt
./archlinux-2016.02.01-dual.iso

wyłączanie komunikatów o błędach

możesz otrzymać komunikat o błędzie „Odmowa uprawnień” podczas wyszukiwania., Na przykład, jeśli przeszukasz katalog główny jako zwykły użytkownik:

find /

otrzymasz ten Komunikat o błędzie, jeśli find spróbuje uzyskać dostęp do pliku, do którego twoje konto użytkownika nie ma uprawnień do odczytu. Możesz wykonać wyszukiwanie jako superużytkownik (root), który ma pełny dostęp do każdego pliku w systemie. Ale nie zaleca się Root, chyba że nie ma innych opcji.,

Jeśli wszystko, co musisz zrobić, to ukryć komunikaty „Odmowa uprawnień”, możesz dodać 2&>1 | grep-v „Odmowa uprawnień” na końcu polecenia, w następujący sposób:

find / 2>&1 | grep -v "Permission denied"

powyższy przykład filtruje „odmowa zgody” wiadomości z wyszukiwania. Jak?

2>&1 jest specjalnym przekierowaniem, które wysyła komunikaty o błędach na standardowe wyjście, aby przekierować połączone linie wyjścia do polecenia grep., grep-v następnie wykonuje odwrotne dopasowanie na „Odmowa uprawnień”, wyświetlając tylko linie, które nie zawierają tego ciągu.

przekierowywanie i używanie grepa do filtrowania komunikatów o błędach jest użyteczną techniką, gdy „Odmowa uprawnień” zaśmieca wyniki wyszukiwania i nie można wykonać wyszukiwania jako root.

przykłady

find ~/. -name "*.txt" -amin -120

Znajdź wszystkie pliki w katalogu domowym i poniżej których kończy się rozszerzenie „.txt”. Wyświetla tylko pliki dostępne w ciągu ostatnich dwóch godzin.,

find . -name "*.zip" -size +10M -mtime -3

Znajdź wszystkie pliki w katalogu roboczym i poniżej których nazwa ma rozszerzenie „.zip ” i którego rozmiar jest większy niż 10 megabajtów. Wyświetla tylko pliki, których zawartość została zmodyfikowana w ciągu ostatnich 72 godzin.

find . -iname "*report*" -type f -maxdepth 2

Wykonaj wyszukiwanie bez rozróżniania wielkości liter plików, które zawierają słowo „report” w nazwie. Jeśli wyszukiwanie znajdzie katalog z „Raport” w nazwie, nie wyświetlaj go. Szukaj tylko w katalogu roboczym i jednym poziomie katalogu pod nim.,

find / -name "*init*" 2>&1 | grep -v "Permission denied" | tee ~/initfiles.txt

Znajdź wszystkie pliki w systemie, których nazwa zawiera „init”, tłumiąc komunikaty o błędach. Wyświetla wyniki na ekranie i wysyła je do pliku w katalogu domowym o nazwie ” initfiles.txt”.