40 najlepszych przykładów polecenia Znajdź w Linuksie

polecenie find jest potężnym narzędziem, które umożliwia administratorom systemu lokalizowanie plików i katalogów oraz zarządzanie nimi w oparciu o szeroki zakres kryteriów wyszukiwania. Może znaleźć katalogi i pliki według ich nazwy, typu lub rozszerzenia, rozmiaru, uprawnień itp.

oprócz lokalizacji plików i katalogów, połączenie poleceniafind z innymi umożliwia podjęcie działań na wynikach., Dodanie opcji -exec umożliwia sysadmins uruchamianie zewnętrznych poleceń i wykonywanie czynności takich jak kopiowanie, przenoszenie, usuwanie lub zmiana uprawnień plików spełniających określone kryteria, takie jak rozmiar, Nazwa itp.

w tym artykule zaczniemy od wyjaśnienia podstawowych poleceń wyszukiwania Linuksa za pomocą przykładów. To pokaże Ci, jak znaleźć pliki i katalogi. Następnie pokażemy Ci, jak używać opcji -exec, aby działać na plikach lub katalogach w oparciu o ich rozmiar, uprawnienia itp.,

ogólna składnia polecenia find to

find {path} {name -of-file or dir-to-search} {action-to-take}

gdzie,

w tym samouczku wyjaśnimy, jak zlokalizować pliki i katalogi pasujące do określonych wzorców. Zobaczymy również, jak wykonywać akcje na plikach lub katalogach, które lokalizuje Komenda find. Przewodnik jest oparty na Ubuntu, ale ma zastosowanie do większości dystrybucji i wersji Linuksa.

Znajdź pliki i katalogi

Znajdź określone pliki według nazwy lub rozszerzenia

aby wyszukać określony plik, uruchom następujące polecenie z katalogu głównego ( / )., Polecenie zawiera dokładną nazwę pliku, którego szukasz.

find . -name file22.txt

Wyjście

./test/file22.txt./sales/file22.txt

należy pamiętać, że Wyniki zawierają ścieżkę. Jest to ważne, jeśli nie znasz katalogu, w którym znajduje się plik, lub jeśli znajduje się on w więcej niż jednym miejscu.

Możesz również wyszukać plik w innym katalogu, pozostając w bieżącej lokalizacji. W takim przypadku musisz podać ścieżkę do katalogu, w którym chcesz wyszukiwać.,

find ./test -name file22.txt

szukanie konkretnych plików w innym katalogu

w naszym przypadku będziemy szukać wszystkich tych, które zaczynają się od Pliku liter w katalogu testowym.

find ./test -name file*

Wyjście

./test/file22.txt./test/file30.doc./test/file1.txt./test/file5,doc

Wyszukaj pliki według rozszerzenia

aby znaleźć plik w Linuksie z określonym rozszerzeniem, dodaj go do polecenia.,

find . -name *.txt

Wyjście

./test/subtest/subfil.txt./test/file22.txt./test/file1.txt./home1/files32.txt./home2/file22.txt./qa/tags.txt

Znajdź pliki i katalogi według nazwy

użyj poniższego polecenia, aby wyszukać pliki i katalogi zaczynające się od literqa. W naszym komputerze mamy pliki qatree.txt I qa.txt oraz katalog o nazwie qa.,

Jeśli uruchomimy polecenie;

find ./ -name "qa*"

zwraca następujące wyjście

./test/qatree.pdf./test/qa.txt./home/qa

Komenda zwraca zarówno pliki, jak i katalogi pasujące do kryteriów wyszukiwania. Aby znaleźć tylko pliki lub katalogi, musisz to określić w poleceniu.

Znajdź tylko pliki lub katalogi

tylko w przypadku plików użyj przełącznikatype f.

tylko pliki

find ./ -type f -name "qa*"

Wyjście

./test/qatree.pdf./test/qa.txt

tylko katalogi

Dodaj opcjętype d aby zlokalizować tylko katalogi.,

find ./ -type d -name "qa*"

Wyjście

./home/qa

niewrażliwe na wielkość liter polecenie Znajdź

wszystkie wyszukiwania z-name Przełącznik są wrażliwe na wielkość liter i nie daje wyników z dużymi literami. Aby uzyskać wszystkie przypadki, użyj opcji -iname.

find ./ -iname "qa*"

Wyjście

./test/qatree.pdf./test/qa.txt./test/QAtest.txt./home/qa

wyszukaj plik z wielu katalogów

aby znaleźć pliki w różnych katalogach, dodaj ich ścieżki w poleceniu., W naszym przypadku sprawdzimy w katalogach test I numeric.

find ./test ./numeric -name file22.txt -type f

Wyjście

./test/file22.txt/root/numeric/file22.txt

Znajdź wiele plików z różnymi rozszerzeniami ze wszystkich katalogów

możesz użyć polecenia Znajdź, aby zlokalizować wiele plików, które mają różne rozszerzenia, takie jak *.doc, *.txt *.pdf itd. Można to zrobić osobno, po jednym rozszerzeniu na raz lub używając tylko jednego polecenia zawierającego wszystkie pożądane rozszerzenia.,

find . -type f ( -name "*.txt" -o -name "*.pdf" -o -name "*.doc" )

wyjście

Znajdź pliki zawierające określony tekst

czasami chcesz uzyskać dostęp do pliku zawierającego określony tekst, ale nie możesz przypomnieć sobie jego nazwy lub lokalizacji. To polecenie pozwala znaleźć wszystkie pliki zawierające tekst docelowy.

aby wyszukać wszystkie pliki zawierające słowo” hiperkonwergencja”, użyj;

find / -type f -exec grep -l -i "hyperconvergence" {} ;

Wyjście

/root/numeric/hci/root/HCIP

opcja –i pozwala poleceniu ignorować przypadki i znajdzie tekst pisany wielkimi literami lub nie, np. hiperkonwergencja , Hiperkonwergencja, itd.,

aby wyszukać pliki w określonym katalogu, po prostu dodaj je do polecenia

find ./numeric -type f -exec grep -l -i "hyperconvergence" {} ;

Wyjście

./numeric/hci

Znajdź pliki i katalogi na podstawie rozmiaru

Możesz znaleźć wszystkie pliki lub katalogi, które są mniejsze, Równe lub większe niż określony rozmiar, w określonym zakresie lub puste. Użyj odpowiedniego formatu rozmiaru w zależności od typu plików lub katalogów, których szukasz.,pliki nd o określonym rozmiarze – równe 30MB

aby wyszukać Znajdź wszystkie pliki 30MB

find / -size 30M

Znajdź pliki większe niż określony rozmiar

find -size +2M

Wyjście

. /Downloads/ubuntu18043.iso ./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c

Znajdź pliki mniej niż 10MB w bieżącym katalogu

find . -type f -size -10M

Znajdź pliki o rozmiarach od 100 do 200Mb

szukając plików w określonym zakresie, np. od 100 do 200 MB

find / -size +100M -size -200M

poszukaj katalogów większych niż 20KB

find / -type d -size +20k

znajdź puste pliki i katalogi.,

pliki

find ./ -type f -size 0

lub

find ./ -type f –empty

katalogi

find ./ -type d –empty

Znajdź pliki według wieku lub czasu modyfikacji

Znajdź pliki starsze niż n dni

find /path/ -type f -name '*.txt' -mtime +8

-mtime +8 będzie szukał txt plików starszych niż 8 dni.,

według daty modyfikacji

To będzie szukać plików zmodyfikowanych w ciągu ostatnich 17 godzin

find . -mtime -17 -type f 

Szuka katalogów zmodyfikowanych w ciągu ostatnich 10 dni

find . -mtime -10 -type d 

Znajdź pliki na podstawie dostępu lub modyfikacji

Znajdź pliki na podstawie daty lub godziny dostępu. Umożliwia to wyświetlenie plików, do których dostęp był lub nie był dostępny w określonym czasie.

aby zobaczyć pliki, które nie były dostępne w ciągu ostatnich 10 dni w katalogu domowym.,

find /home -atime +10

pliki dostępne dokładnie 10 dni temu

find /home -atime 10

dostępne w ciągu ostatnich 10 dni

find /home -atime -10

Znajdź pliki zmodyfikowane w ciągu ostatnich n dni

Możesz również wyszukać pliki w katalogu /home zmodyfikowane w ciągu ostatnich 10 dni za pomocą polecenia;

find /home -mtime -10 

Znajdź pliki zmodyfikowane w określonym czasie.

na przykład wszystkie pliki zmodyfikowane od 6 do 15 dni temu w katalogu domowym.,

find /home -type f -mtime +6 -mtime -15

pliki i katalogi dostępne w ciągu ostatnich 10 minut

aby znaleźć pliki dostępne w ciągu ostatnich 10 minut, użyj opcji-amin.

find . -amin -10 -type f

Wyjście

./.bash_history./.profileroot@ubuntu1804:~#

katalogi dostępne w ciągu ostatnich 10 minut

find . -amin -10 -type d

Znajdź pliki pasujące do określonych uprawnień

składnia

$ find -perm mode

gdzie tryb jest uprawnieniem, które jest albo Numeryczne, takie jak 644, 655, 700, 777, itd, lub litery, takie jak u=x, a=r+x, itd.,

tryb można określić na trzy różne sposoby.

  1. bez prefiksu, gdy chcesz znaleźć pliki o dokładnie określonych uprawnieniach.
  2. z „-” dla plików z co najmniej określonym uprawnieniem. Zwraca pliki z podanymi i dodatkowymi wyższymi uprawnieniami.
  3. użycie ” / ” wymaga podania właściciela lub grupy z uprawnieniami do pliku.,

Znajdź pliki z uprawnieniem 777

find -perm 777

Wyjście

./file1

Znajdź pliki z co najmniej 766
Znajdź-perm -766

wyjście

./file2./file1

polecenie wyszukuje wszystkie pliki, w których

  • właściciel pliku ma uprawnienia do odczytu/zapisu/wykonania.
  • grupa ma uprawnienia do odczytu/zapisu
  • inni mają uprawnienia do odczytu/zapisu

w związku z tym zwraca dwa pliki spełniające to kryterium – plik1 i plik2., Pliki nie muszą mieć dokładnych uprawnień766 i mogą mieć dodatkowe uprawnienia tak długie, ale muszą mieć przynajmniej określone uprawnienia.

Znajdź pliki zapisywalne przez właściciela

będziemy teraz używać „/„, aby wyszukać pliki zapisywalne przez ich właściciela, grupę lub innych.

find -perm /222../file2./file3./file1

powyższe wyszukiwanie plików, które mogą być zapisywane przez ich właściciela lub grupę.
zwraca pliki, które są zapisywalne przez jeden z nich, ale niekoniecznie przez oba. Aby zobaczyć pliki, w których oba mają uprawnienia do zapisu, użyj prefiksu–.,

./file2./file1

Znajdź pliki należące do użytkownika

Znajdź wszystkie pliki należące do Jacka

find /home -user jack

Wyjście

/home/jack/home/jack/examples.desktop/home/jack/.gnupg/home/jack/.gnupg/private-keys-v1.d/home/jack/ans.cgi

Znajdź określone pliki należące do użytkownika

Znajdź wszystkie pliki tekstowe własność Jacka

find /home -user jack -iname "*.txt"

wyjście

/home/jack/docs/file32.txt

znajdź i wyświetl pliki i katalogi wraz z ich uprawnieniami

find -name "*.conf" | ls -l

wyjście

znajdź i działaj na wynikach

w tej sekcji przyjrzymy się, jak możesz działać na plikach, które pasują do wzorca określonego w komendzie znajdź.,

Znajdź pliki i zmień uprawnienia

znajdź i zmień uprawnienia niektórych typów plików. W naszym przypadku będziemy pracować z plikami PHP o różnych uprawnieniach, jak pokazano poniżej.,

będziemy teraz szukać wszystkich plików PHP (powyżej) i zastąpić ich uprawnienia 755

find ver -name "*.php" -type f -exec chmod 755 {} ;

polecenie szuka plików PHP w katalogu ver I ustawia ich uprawnienia na 755 (rwxr-xr-x)

wyniki

znajdź i zmień uprawnienia plików i katalogów

znajdź pliki z uprawnieniami 644 i zmień je na 655

find . -type f -perm 644 -exec chmod 655 {} ;

Możesz również szukać katalogów z uprawnieniami 644 i zastąpić je 755.,

find . -type d -perm 644

Wyjście

./docs 

folder docs ma 644 uprawnienia

drwxrwxr-x 2 jack jack 4096 Jan 3 12:45 docs

aby ustawić go na 755, uruchamiamy

find . -type d -perm 644 -exec chmod 755 {} ;

teraz możemy sprawdzić ponownie, co dokładnie 755

find . -type d -perm 755

wyjście
.
./docs

z góry widać, że katalogi root i docs mają uprawnienia 755.,

Ls –la polecenie podaje następujące szczegóły

drwxr-xr-x 2 jack jack 4096 Jan 3 12:45 docs

znajdź i skopiuj pliki lub katalogi

znajdź i skopiuj określony plik do katalogu

poniższe polecenie znajdzie plik file22.txT i skopiuj go do katalogu ~/tmp/images.,

find -iname file22.txt -exec cp {} ~/tmp/images ;

znajdź i skopiuj jeden typ plików do katalogu

aby znaleźć pliki takie jak obrazy z rozszerzeniemjpg w bieżącym katalogu i skopiuj je do innej lokalizacji, takiej jak folder obrazów, użyj;

find -iname '*.jpg' -exec cp {} ~/tmp/images ;

To znajdzie i skopiuje wszystkie pliki JPG do folderu~/tmp/images.

znajdź i skopiuj jeden plik do wielu katalogów

znajdź i skopiuj jeden plik do wielu katalogów.,

find ~/tmp/dir1/ ~/tmp/dir2/ $HOME/3/ -maxdepth 0 -exec cp ~/numeric/hci {} ;

spowoduje to znalezienie pliku hci file i skopiowanie go do trzech katalogów /tmp/dir1/ /tmp/dir2/ I $HOME/3/

znajdź i przenieś pliki do innego katalogu

aby przenieść znany Plik z katalogu do innego., Aby przenieść plik universal.php;

find ~/folder/ -type f -name universal.php -exec mv {} ~/numeric/ ;

Wyszukaj i przenieś pliki z określonym rozszerzeniem do innego folderu

find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/ ;

Znajdź określone pliki i przenieś do określonego innego folderu

find -type f -name uni*.* -exec mv {} ~/unifiles/ ;

polecenie wyszukuje wszystkie pliki o nazwach zaczynających się od uni i posiadające jakiekolwiek rozszerzenie. Następnie przenosi je do katalogu /unifiles/

znajdź i przenieś pliki na podstawie wieku

znajdź i przenieś pliki starsze niż określone dni do innej lokalizacji, takiej jak archiwum.,

find /path/ -type f -name '*.pdf' -mtime +20 -exec mv {} /backup1/ ;

spowoduje to wyszukanie plików pdf starszych niż 20 dni i przeniesienie ich do katalogu backup1.,pliki i katalogi

składnia wyszukiwania i usuwania plików lub katalogów w bieżącym katalogu to

find . -type f -name "file to delete" -exec rm -f {} ; usuwanie tylko plików lub

usuwanie tylko katalogów

Wyszukiwanie i usuwanie tylko określonych plików

wyszukiwanie i usuwanie plików zaczynających się od til, użyj;

find . -type f -name "til*" -exec rm {} ; 

aby znaleźć i usunąć katalogi zaczynające się od til

find . -type d -name "til*" -exec rm {} ;

Usuń zarówno pliki, jak i katalogi

find . -name "til*" -exec rm -rf {} ; 

spowoduje to usunięcie zarówno plików, jak i katalogów zaczynających się od liter til.,

Usuń przez rozszerzenie

Poniżej znajduje się sposób na zlokalizowanie i usunięcie wszystkich plikówtxt w bieżącym katalogu. Zamień txt na inne rozszerzenie, takie jak bak, pdf lub inne, które chcesz usunąć.

find . -type f -name "*.txt" -exec rm -f {} ;

Jeśli chcesz, aby system zapytał cię o potwierdzenie przed usunięciem KAŻDEGO pliku, Dodaj opcję-i, jak poniżej.,

find . -type f -name "*.txt" -exec rm -i {} ;

Wyjście

domyślnie-rmnie usunie katalogów i musisz użyć opcji–r, aby zapewnić rekurencyjne usunięcie. Zapewnia to usuwanie pustych katalogów i tych zawierających pliki. Opcja -f wymusza usunięcie i jest używana zarówno dla plików, jak i katalogów.

znajdź i usuń pliki starsze niż n dni

znajdź i usuń pliki kopii zapasowych starsze niż 20 dni z bieżącego katalogu.,

find . -type f -name '*.bak' -mtime +20 -exec rm {} ;

spowoduje to usunięcie wszystkich plików.bak starszych niż 20 dni.

znajdź i usuń tylko katalogi

aby usunąć katalog o nazwie dir22

find . -type d -name dir22 -exec rm -rf {} ;

upewnij się, że pasujesz do nazwy katalogu lub użyj opcji -iname.

find . -type d -iname Dir22 -exec rm -rf {} ;

usuwa zarówno Dir22 oraz dir22

aby potwierdzić przed usunięciem, użyj opcji-i.

find . -type d -iname Dir22 -exec rm -rf -i {} ;

Wyjście
rm: remove directory'./ Dir22, n
rm: remove directory”./ dir22 y

w naszym przypadku wpisaliśmy n dla katalogu Dir22, który nie zostanie usunięty, a y dla katalogu dir22, który zostanie teraz usunięty.

znajdź i Usuń puste pliki

możesz użyć dowolnego z poniższych poleceń, aby zlokalizować puste pliki i usunąć je automatycznie.

find ./ -type f -size 0 -exec rm -f {} ;

lub
Znajdź ./ – type f-size 0 / xargs rm-F
lub
find .,/ – type f-size 0-delete

znajdź i Usuń puste katalogi

aby usunąć puste katalogi użyjemy opcjid.

find ./ -type d -empty -exec rmdir {} ;

inną alternatywą jest użycie delete zamiast remove.

find ./ -type d -empty -delete

należy pamiętać, że usunięcie systemu lub krytycznych plików z komputera może uszkodzić system operacyjny lub Aplikacje lub doprowadzić do utraty ważnych danych.

aby uniknąć przypadkowego usunięcia, najlepiej jest użyć konta użytkownika niebędącego rootem., Upewnij się również, że usuwasz odpowiednie pliki, które nie są przydatne i że na wszelki wypadek masz kopię zapasową wszystkich plików danych.

co dalej?

wypróbuj powyższe polecenia Znajdź Linuksa w środowisku laboratoryjnym lub nie produkcyjnym. Sprawdź, czy możesz użyć niektórych do zautomatyzowania czyszczenia systemu plików za pomocą Crontab. Aby opanować Linuksa, sprawdź ten kurs online.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Przejdź do paska narzędzi