40 Cele mai bune exemple de comandă Find în Linux

Linux find comanda este un instrument puternic care permite administratorilor de sistem să localizeze și să gestioneze fișiere și directoare pe baza unei game largi de criterii de căutare. Poate găsi directoare și fișiere după numele lor, tipul lor sau extensia, dimensiunea, permisiunile etc.

pe lângă localizarea fișierelor și directoarelor, combinarea comenzii find cu alții vă permite să acționați asupra rezultatelor., Adăugarea -exec opțiune permite sysadmins pentru a rula comenzi externe și de a efectua acțiuni, cum ar fi copierea, mutarea, ștergerea, sau modificarea permisiunilor de fișiere care corespund criteriilor specificate, cum ar fi dimensiunea, numele, etc.

în acest articol, vom începe prin a explica comenzile de bază Linux find cu exemple. Acest lucru vă va arăta cum să găsiți fișiere și directoare. Vă vom arăta apoi cum să utilizați opțiunea -exec pentru a acționa asupra fișierelor sau directoarelor în funcție de dimensiunea, permisiunile etc.,

sintaxa generală pentru comanda find este

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

unde,

în acest tutorial, vă vom explica cum să localizați fișierele și directoarele care se potrivesc tiparelor specificate. Vom vedea, de asemenea, cum să efectuați acțiuni asupra fișierelor sau directoarelor pe care le localizează comanda find. Ghidul se bazează pe Ubuntu, dar este aplicabil majorității distribuțiilor și versiunilor Linux.

găsiți fișiere și directoare

găsiți fișiere specifice după nume sau extensie

pentru a căuta un anumit fișier, executați următoarea comandă din rădăcină ( / )., Comanda conține numele exact pentru fișierul pe care îl căutați.

find . -name file22.txt

Ieșire

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

vă Rugăm să rețineți că rezultatele includ calea. Acest lucru este important dacă nu cunoașteți directorul în care se află fișierul sau când se află în mai multe locuri.

de asemenea, puteți căuta fișierul într-un alt director în timp ce încă în locația curentă. În acest caz, trebuie să furnizați calea pentru directorul în care doriți să căutați.,

find ./test -name file22.txt

căutând fișiere specifice într-un alt director

În cazul nostru, vom căuta toți cei care încep cu fișierul de Litere din Directorul de testare.

find ./test -name file*

Ieșire

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

Căutare pentru fișiere cu extensia

Pentru a găsi un fișier în Linux cu o anumită extensie, adăugați-l la comandă.,

find . -name *.txt

Ieșire

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

Găsi fișierele și directoarele cu nume

Utilizați comanda de mai jos pentru a uita-te pentru fișiere și directoare, începând cu literele qa. In calculatorul nostru, avem qatree.txt și qa.txt fișiere, precum și un director cu numele qa.,

Dacă vom rula comanda;

find ./ -name "qa*"

Se revine la următoarea ieșire

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

comanda întoarce atât fișiere și directoare care corespund criteriilor de căutare. Pentru a găsi numai fișiere sau directoare, trebuie să specificați acest lucru în comandă.

găsiți numai fișiere sau directoare

doar pentru fișiere, utilizați comutatorul type f.

numai Fișiere

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

Ieșire

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

doar Directoare

se Adaugă type d opțiune pentru a localiza doar directoare.,

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

Ieșire

./home/qa

Caz insensibil găsi comanda

Toate căutările cu -name comutare sunt cazuri sensibile și nu va da rezultate cu majuscule. Pentru a obține toate cazurile, utilizați opțiunea -iname.

find ./ -iname "qa*"

Ieșire

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

Căutați un fișier din mai multe directoare

Pentru a găsi fișierele în directoare diferite, adăugați-le căi în comandă., În cazul nostru, vom verifica directoarele testși numeric.

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

Ieșire

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

Găsiți mai multe fișiere cu diferite extensii din toate directoarele

puteți folosi comanda find pentru a localiza mai multe fișiere care împărtășesc diferite extensii, cum ar fi *.doc, *.txt *.pdf, etc. Acest lucru se poate face separat, o extensie la un moment dat sau folosind o singură comandă care include Toate extensiile dorite.,

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

ieșire

Găsi fișiere care conțin un anumit text

Uneori, doriți să accesați un fișier care conține un anumit text, dar nu-și poate aminti numele său de fișier sau locație. Această comandă vă permite să găsiți toate fișierele care conțin textul țintă.

pentru A căuta toate fișierele care conțin cuvântul hyperconvergence”, a folosi;

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

Ieșire

/root/numeric/hci/root/HCIP

–eu opțiune permite comanda pentru a ignora cazurile și va găsi textul dacă majuscule sau nu, adică hyperconvergence, Hyperconvergence , etc.,

Pentru a uita-te pentru fișiere într-un anumit director, pur și simplu adăugați-l la comandă

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

Ieșire

./numeric/hci

Găsi Fișiere și Directoare în funcție de Dimensiuni

puteți găsi toate fișierele sau directoarele care sunt mai mici, egale sau mai mari decât o anumită dimensiune, într-un anumit interval sau gol. Utilizați formatul de dimensiune corespunzător în funcție de tipul de fișiere sau directoare pe care le căutați.,nd fișiere de o anumită dimensiune egală cu 30 MB

de Căutare Pentru a găsi toate 30MB fișiere

find / -size 30M

Găsi fișiere mai mari decât o anumită dimensiune

find -size +2M

Ieșire

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

Găsi fișierele mai puțin de 10 MB în directorul curent

find . -type f -size -10M

Găsi fișiere cu dimensiuni între 100-200MB

atunci Când căutați fișiere într-un interval specific, cum ar fi între 100 și 200 MB

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

Uita-te pentru directoare mai mare decât 20kb

find / -type d -size +20k

Găsi gol fișiere și directoare.,

Fișiere

find ./ -type f -size 0

sau

find ./ -type f –empty

Directoare

find ./ -type d –empty

Găsi fișierele de vârstă sau de timpul de modificare

Găsi fișierele mai vechi de n zile

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

-mtime +8 va arata pentru txt fișiere care sunt mai vechi de 8 zile.,

De data modificării

Acesta va căuta fișierele modificate în ultimele 17 ore

find . -mtime -17 -type f 

se Pare pentru directoare a modificat în ultimele 10 zile,

find . -mtime -10 -type d 

Găsi fișiere bazate pe acces sau modificare

Găsi fișiere bazate pe o dată sau accesate. Acest lucru vă permite să vedeți fișiere care au fost sau nu au fost accesate într-o anumită perioadă.pentru a vedea fișierele care nu au fost accesate în ultimele 10 zile în directorul principal.,

find /home -atime +10

Fișiere accesate exact 10 zile în urmă

find /home -atime 10

Accesate în ultimele 10 zile,

find /home -atime -10

Găsi fișierele modificate în ultimele n zile

puteți, de asemenea, uita-te pentru fișiere în /home director modificat în ultimele 10 zile, folosind comanda;

find /home -mtime -10 

Găsi fișierele modificate într-o anumită perioadă.

de exemplu, toate fișierele modificate între 6 și 15 zile în urmă în directorul acasă.,

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

Fișiere și directoare accesate în ultimele 10 minute

Pentru a găsi fișierele accesate în ultimele 10 minute, utilizați -amin opțiune.

find . -amin -10 -type f

Ieșire

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

Directoare accesate în ultimele 10 minute

find . -amin -10 -type d

Găsi fișierele care se potrivesc cu anumite permisiuni

Sintaxa

$ find -perm mode

În cazul în care modul este permisiunea care este fie numeric, cum ar fi 644, 655, 700, 777, etc, sau litere, cum ar fi u=x, a=r+x, etc.,

puteți specifica modul în următoarele trei moduri diferite.

  1. fără prefix atunci când doriți să găsiți fișiere cu permisiunile exacte specificate.
  2. cu „-” pentru fișiere cu cel puțin permisiunea specificată. Aceasta returnează fișierele cu permisiunile specificate, precum și cu permisiunile suplimentare mai mari.
  3. folosind „/” necesită specificarea proprietarului sau grupului cu permisiunea fișierului.,

Găsi fișiere cu permisiunea 777

find -perm 777

Ieșire

./file1

Găsi fișiere cu cel puțin 766
găsiți -perm -766

Ieșire

./file2./file1

comanda caută toate fișierele în care

  • fișierul proprietarul a citi/scrie/permisiuni de executare.
  • grup are permisiuni de citire/scriere
  • alții au permisiune de citire / scriere

ca atare, returnează două fișiere care îndeplinesc acest criteriu – file1 și file2., Fișierele nu trebuie să aibă exact 766 permisiuni și pot avea altele suplimentare, atâta timp, dar trebuie să aibă cel puțin specificat.

Găsi fișierele de scriere de către proprietar

Vom folosi acum „/” pentru a arata pentru fișiere permisiuni de scriere, fie de către proprietarul lor, sau de grup, sau altele.

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

cele de mai sus caută fișiere care pot fi scrise fie de proprietar, fie de grup.
aceasta returnează fișiere care pot fi scrise de oricare, dar nu neapărat de ambele. Pentru a vedea fișierele, în cazul în care ambele au permisiuni inscriptibile, utilizați – prefix.,

./file2./file1

Găsi fișierele deținute de un utilizator

pentru a Găsi toate fișierele deținute de Jack

find /home -user jack

Ieșire

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

Găsi anumite fișiere deținute de un utilizator

Găsi toate fișierele de text detinut de Jack

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

Ieșire

/home/jack/docs/file32.txt

Găsi și lista de fișiere și directoare împreună cu permisiunile lor,

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

Ieșire

Găsi și de a acționa asupra rezultatelor

În această secțiune, ne vom uita la modul în care puteți acționa pe fișierele care se potrivesc cu modelul specificat în comanda find.,

găsiți fișiere și modificați permisiunile

găsiți și modificați permisiunile anumitor tipuri de fișiere. În cazul nostru, vom lucra cu fișiere PHP cu permisiuni diferite, așa cum se arată mai jos.,

acum Vom căuta toate fișierele PHP (de mai sus) și înlocuirea lor permissions cu 755

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

comanda arata pentru PHP fișiere în ver director și apoi stabilește permisiunea lor să 755 (rwxr-xr-x)

Rezultate

Găsi și de a schimba fișiere și director permissions

Găsi fișiere cu 644 de permisiuni și schimbați-le pentru a avea 655 permissions

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

de asemenea, puteți căuta directoare cu 644 de permisiuni și înlocuiți-o cu 755.,

find . -type d -perm 644

Ieșire

./docs 

docs are permisiuni 644

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

pentru a seta La 755, vom rula

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

Acum putem verifica din nou pentru a vedea exact ceea ce 755

find . -type d -perm 755

Ieșire
.
./ docs

de sus putem vedea că directoarele root și docs au permisiunile 755.,

Ls –la comandă vă oferă următoarele detalii

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

Găsi și copia fișiere sau directoare

Găsi și copia un anumit fișier la un director

comanda De mai jos va găsi file22.txt de fișiere și copiați-l în ~/tmp/images director.,

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

Găsi și copia un singur tip de fișiere într-un director

Pentru a găsi fișiere, cum ar fi imagini cu jpg extensia în directorul curent și copiați-le într-o altă locație ca un dosar de imagini, utilizați;

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

Acest lucru va găsi și copia toate fișierele jpg la ~/tmp/images folder.

găsiți și copiați un fișier în mai multe directoare

găsiți și copiați un singur în mai multe directoare.,

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

Acest lucru va găsi fișierul fișierul și copiați-l în trei directoare de /tmp/dir1/ /tmp/dir2/ și $HOME/3/

Găsi și pentru a muta fișierele într-un director diferit

Pentru a muta un fișier cunoscut de la un director la altul., Pentru a muta universal.php file;

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

Căutare și pentru a muta fișierele cu o anumită extensie într-un folder diferit

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

Găsi anumite fișiere, și de a trece la un anumit folder diferit

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

comanda caută toate fișierele cu nume care încep cu uni și au orice extensie. Apoi le mută în directorul /unifiles/

găsiți și mutați fișierele în funcție de vârstă

găsiți și mutați fișierele mai vechi decât zilele specificate într-o altă locație, cum ar fi arhiva.,

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

aceasta va căuta fișiere pdf mai vechi de 20 de zile și le va muta în directorul backup1.,fișiere și directoare

sintaxa pentru găsirea și eliminarea fișierelor sau directoarelor din directorul curent este

find . -type f -name "file to delete" -exec rm -f {} ; pentru a șterge fișiere sau numai

find . -type d -name "dir-to-delete" -exec rm -rf {} ; pentru a șterge directoarele doar

Găsi și șterge fișiere specifice numai

Pentru a găsi și șterge fișierele începând cu til, utilizare;

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

Pentru a găsi și șterge directoare începând cu til

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

Scoateți ambele fișiere și directoare

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

Acest lucru va elimina ambele fișiere și directoare incepand cu litere til.,

ștergeți prin extensie

mai jos este modul în care puteți localiza și șterge toate fișiereletxt din directorul curent. Înlocuiți txt cu altă extensie, cum ar fi bak, pdf sau orice alte care doriți să o eliminați.

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

În cazul în care doriți ca sistemul să vă solicite să confirmați înainte de a șterge fiecare fișier, adăugați opțiunea-i ca mai jos.,

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

Ieșire

în mod implicit, -rm nu va elimina directoare și aveți nevoie pentru a utiliza –r opțiune pentru a asigura o recursive de îndepărtare. Aceasta asigură ștergerea directoarelor goale și a celor care conțin fișiere. Opțiunea -f forțează eliminarea și este utilizată atât pentru fișiere, cât și pentru Directoare.

găsiți și ștergeți fișiere mai vechi de n zile

găsiți și ștergeți fișiere de rezervă mai vechi de 20 de zile din directorul curent.,

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

aceasta va șterge toate fișierele .bak mai vechi de 20 de zile.

Găsi și șterge directoare doar

Pentru a șterge un director numit dir22

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

a se Asigura că se potrivesc cu nume de director caz sau de a folosi -iname opțiune.

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

Elimină atât Dir22 și dir22

Pentru a confirma înainte de ștergere, utilizați opțiunea-i.

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

ieșire
rm: eliminați directorul”./ Dir22′?, n
rm: eliminați directorul”./ dir22′? y

În cazul nostru, am tastat n pentru director Dir22 care nu vor fi șterse și y pentru dir22 care va fi acum eliminate.puteți utiliza oricare dintre următoarele comenzi pentru a localiza fișierele goale și a le șterge automat.

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

sau
găsi ./ – tip f-size 0 / xargs rm-f
sau
găsi .,/- type f –size 0-delete

găsiți și eliminați directoarele goale

pentru a elimina directoarele goale, vom folosi opțiunea d.

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

o altă alternativă este de a utiliza șterge în loc de a elimina.

find ./ -type d -empty -delete

rețineți că ștergerea sistemului sau a fișierelor critice de pe computer poate deteriora sistemul de operare sau aplicațiile sau poate duce la pierderea datelor importante.

pentru a evita ștergerile accidentale, este cea mai bună practică să utilizați un cont de utilizator non-root., De asemenea, asigurați-vă că ștergeți fișierele potrivite care nu sunt utile și că aveți o copie de rezervă a tuturor fișierelor dvs. de date doar în caz.

ce urmează?

încercați comenzile de găsire Linux de mai sus în laboratorul dvs. sau în mediul non-producție. Vedeți dacă puteți utiliza unele pentru a automatiza curățarea sistemului de fișiere cu Crontab. Și, pentru a stăpâni Linux, consultați acest curs online.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Sari la bara de unelte