Comanda găsi în Linux

Comanda find în Linux / FreeBSD. Sintaxa comenzii Find.

Sintaxa descoperirii:

# Găsiți [cale] [opțiuni] [Căutare] [Operații File]

Cale - în cazul în care să caute fișiere, puteți utiliza o listă de căi separate printr-un spațiu.

-atime N Ultima dată când fișierul a fost accesat N zile în urmă
-schimbarea mtime N Ultimul fișier a fost N zile în urmă
-nume nume de fișier șablon (nume model), fără o cale. Se recomandă întotdeauna model în ghilimele
-Dimensiunea [±] N [cwbkMG] Dimensiunea fișierului este egal cu N blocuri, dacă este specificat + N, atunci dimensiunea fișierului este mai mare decât N, N - mai puțin. N înseamnă după mărime bloc de simboluri. b - 512 octeți, cu - octet, w - 2 octeți, k - kilobiți, M - megabytes, G - gigabytes.
-tip N N. Cele mai utilizate valori tipul de fișier pentru N: d - directorul, f - fișierul.
-fișier UserName utilizator este deținut de un nume de utilizator cu numele de utilizator.

Exemple găsi utilizați comanda folosind parametrii:

# Find. tip f -name "

Găsiți directorul curent fișierele obișnuite (nu directoarele), care încep cu caracterul "

# Find. -newer file.bak tip f -print

Găsiți fișierele directorul curent modificate mai târziu de fișier file.bak.

operatori
Criteriile pot fi combinate cu ajutorul operatorilor. Mai jos sunt operatorii în ordinea priorității lor.

Formularul Scurta descriere format lung
!-nu e criteriul Negația (returnează true, în cazul în care testul fals)
kriteriy1-un kriteriy2 -și operatorul și (adevărat, în cazul în care kriteriy1 și kriteriy2 adevărat)
kriteriy1-o -sau kriteriy2 operatorul OR (adevărat, în cazul în care kriteriy1 kriteriy2 sau adevărat)

În general, atunci când se utilizează criterii operatorilor verificate în ordinea priorității lor. Puteți schimba ordinea folosind paranteze. Suporturile trebuie să fie scăpat cu un backslash.

Exemple de utilizare a operatorilor de comandă găsi cu ajutorul

#find. \ (-name "% *" -sau -name "temp *" \) tip f -print

Găsiți fișierele din directorul curent care încep cu caracterul „%“ sau c «temp» și sunt fișierele (de tip f), dar nu directoare.

# Find. -maxdepth 1 \ (\ (+ 600M -și: dimensiune: dimensiune -1G \) -sau -name "* .mpeg" \) -și tip f

Găsiți directorul curent (nu subdirectoare de prelucrare - -maxdeph 1) fișiere regulate (-file f) mai mare decât 600MB și mai puțin de 1 GB (: dimensiune) sau un fișier al cărui nume se termină în «.mpeg» (-name).

Operațiuni de fișiere
Când executați comanda de găsire, puteți efectua diverse operații cu fișierele găsite. Luați în considerare cele mai importante.

-EXEC comanda \; - comanda Executare. Rețineți că, după ce echipa a pus o bară oblică și virgulă.
-comandă execdir \; - La fel ca exec, dar se numește comanda de subdirectorul care conține fișierul curent.
-OK comanda \; - La fel ca exec, dar înainte de procesarea fișierului următor se va cere pentru comanda.
-comandă okdir \; Ce este ok să execdir.
-imprimare - Numele fișierului de ieșire de pe ecran.
-ls - Execută o comandă de ls -dils din fișierul curent.

În comenzile rulat, puteți utiliza parametrul <> ca un argument, care este înlocuit cu fișierul curent.

Exemple de utilizare a comenzii de găsire cu acțiune

# Find. + 1000C tip: dimensiune f -Este

Găsiți fișierele directorul curent sunt mai mari decât dimensiunea obișnuită de 1000 de octeți, și de a efectua cu comanda ls -dils (ls acțiune).

Găsiți directorul curent fișierele obișnuite care încep cu o tilda "

„Și să emită o cerere pentru fiecare fișier care urmează să fie șters (pentru a efectua comanda rm).

Caută pe dimensiunea lor de fișier

# Find / var / log -name "* .log" -și \ (+ 1k -și: dimensiune -1000k: dimensiune \) -și tip f -print

Acestea vor fi găsite și afișate fișierele cu extensia * .log, variind în mărime de la 1KB la 1000Kb

Caută pe dosarele lor de proprietar și de grup

Această comandă găsește toate fișierele care nu au nici un proprietar

-user sau -uid opțiuni vă permit să căutați fișiere ID-ul de utilizator (UID) și numele de utilizator și opțiunea în numele -în al grupului.

# Find. -name "* .log" rădăcină rădăcină -user -în

Găsiți toate fișierele din directorul curent cu utilizatorul jurnal de extensie rădăcină și grupul rădăcină

# Găsiți -user rădăcină -user www o-

Găsiți toate fișierele de utilizator sau www rădăcină

Folosind expresii regulate

găsi utilitate acceptă expresii regulate. da imediat un exemplu. Să presupunem că vreau să găsesc toate fișierele cu extensiile .php sau .js. Am putea alerga după cum urmează:

# Găsiți -regextype POSIX-egrep -regex '* (php | js) $.'

Se pare un pic cam greu, nu-i așa? După cum refutare subliniază faptul că sintaxa utilizat aici egrep (-regextype POSIX-egrep). și apoi stabilește o expresie regulată folosită pentru a căuta. Expresia începe și se termină cu ghilimele simple la mine la shell-shell nu a încercat să se ocupe de expresie regulată. Apoi vine expresia. *, Care folosește wildcard care se potrivește cu orice caracter sau set de caractere. Partea (php | js) spune că este necesar să se caute php sau js. Pipeline (|) în această expresie corespunde expresiei logice „sau“. În cele din urmă, semnul dolar ($), care se termină cu o expresie spune că expansiunea ne uităm la sfârșitul numelui fișierului. Deci, dacă aveți un fișier numit js.txt, acesta nu se va potrivi cu criteriile de căutare.

în cele din urmă locul de muncă
În utilitatea găsi acolo tot timpul pentru a găsi de lucru cu fișierul. Puteți căuta după timpul de acces (-atime), sau la momentul ultimei modificări a fișierului (-mtime), sau la momentul ultimei modificări ea (-ctime).

De exemplu, să găsim toate fișierele care nu sunt modificate în ultimele două zile:

Dacă doriți să căutați fișiere într-un anumit interval, puteți combina opțiuni. Deci găsi -mtime +2 -mtime -5 comanda este de a „două sau mai multe zile în urmă, dar nu mai mult de cinci zile în urmă.“

Lucrăm cu minute
Uneori trebuie să caute fișierele modificate în ultima zi, iar opțiunile de căutare anterioare nu sunt prea exacte pentru acest scop. Utilitarul găsi este bun, deoarece are, de asemenea, opțiuni de -amină. -cmin și -mmin. care sunt similare cu opțiunile discutate anterior, dar este folosit în câteva minute, nu zile în ele. Deci, dacă doriți să vedeți ce fișiere au fost modificate sau unele dintre ele au avut acces la ultima zi, puteți utiliza acești parametri.

# Găsiți -name WordPress '* js'

# Găsiți WordPress -maxdepth 1 -name '* js'

Căutarea va fi efectuată numai în directorul WordPress, dar nu în subdirectoare. Dacă schimbați -maxdepth 2, acesta va fi căutat în subdirectoarele de director WordPress, dar nu în subdirectoare mai profunde.

Combinând utilitatea găsi cu alte echipe
Acum, că ați găsit fișierele pe care le cautati, ce ai de gând să faci cu ei? Puteți folosi utilitarul pentru a găsi parametrii xargs sau exec. care vă permit să specificați acțiunea pentru a efectua pe fișierele după ce le găsiți.

Să presupunem că doriți să schimbați proprietarul fișierului la rădăcină pe www-date direct la un număr mare de fișiere. Căutați toate aceste fișiere este doar primul pas, trebuie să modificați, de asemenea, proprietarul fișierului. Făcând manual pe listă, care a returnat o descoperire de utilitate. foarte obositoare. Prin urmare, pentru a schimba proprietarul fișierului pe care doriți să utilizați opțiunea exec:

# Găsiți -user exec rădăcină chown www-date <> \;

Legate de intrări: