Comanda find ne ajută să găsim un anumit fișier într-un director. Este folosit pentru a găsi lista de fișiere pentru diferite condiții, cum ar fi permisiunea, proprietatea utilizatorului, modificarea, data/ora, dimensiunea și multe altele.
În sistemele de operare asemănătoare Unix și în alte sisteme de operare, comanda find este un utilitar de linie de comandă care găsește fișiere pe baza câtorva formate specificate de utilizator și fie tipărește calea tuturor obiectelor potrivite, fie, dacă sunt solicitate alte acțiuni, implementează acea acțiune pe toate obiectele potrivite.
Începe o căutare dintr-o locație de pornire dorită și, după aceea, traversează recursiv directoarele (nodurile) unei structuri ierarhice (în general un arbore). Comanda find poate căuta și traversa din diferite sisteme de partiții de fișiere aparținând unui singur sau mai multor dispozitive de stocare din directorul de pornire.
Formatul de căutare conține un model de potrivire cu numele fișierului sau intervalul de timp pentru potrivirea cu timpul de modificare sau timpul de acces la fișier. Comanda find oferă o listă a fiecărui fișier din directorul de lucru curent în mod implicit. Cu toate acestea, utilizatorii pot restricționa căutarea la un nivel maxim dorit în directorul de pornire.
Programele de localizare asociate aplică o bază de date de fișiere indexată obținută din comanda fine pentru a oferi o tehnică mai rapidă de căutare a întregului sistem de fișiere după nume.
Utilitarul de căutare vine implicit cu majoritatea distribuții Linux , deci nu trebuie să instalăm niciun pachet suplimentar. Este una dintre cele mai esențiale și utilizate comenzi ale Linux sistem.
find
Cele două opțiuni determină modul în care find ar trebui să ia în considerare legăturile simbolice. Natura implicită este să nu urmărești niciodată legături simbolice. Steagul, adică -L , va conduce găsi să urmărească legături simbolice. Steagul, adică -H , va urmări doar legături simbolice, continuând cu argumentele liniei de comandă. Flag-urile sunt menționate în standardul POSIX pentru comanda find. O extensie de bază este un steag, adică -P , pentru a dezactiva explicit linkul simbolic următor.
Măcar o cale trebuie să anticipeze expresia. Comanda find poate interpreta în mod intern caracterele metalice, iar comenzile trebuie citate cu atenție pentru a gestiona shell-ul global.
Componentele expresiei sunt izolate de limita argumentului liniei de comandă, indicată în general ca spațiu alb în sintaxa shell-ului. Ele sunt considerate din partea stângă în partea dreaptă. Ele pot include componente logice precum SAU și ȘI, precum și predicate (acțiuni și filtre). GNU find conține câteva alte caracteristici nemenționate de POSIX.
Următoarele simboluri sunt folosite pentru a specifica directorul:
(.) : Pentru numele directorului curent
(/) : Pentru directorul rădăcină
Scurt istoric al comenzii Find
Comanda find a apărut în versiunea 5 Unix ca un element al Bancul de lucru al programatorului proiect și a fost specificat de Dick Haight cu cpio, care au fost dezvoltate pentru a fi utilizate împreună.
Inițial, implementarea GNU a comenzii find a fost specificată de Eric Decker . Mai târziu, a fost dezvoltat de David MacKenzie, Tim Wood , și Jay Plett . De asemenea, comanda find a fost portată pe sistemul de operare IBM i.
graficul de alocare a resurselor
Predicate
Primarele utilizate pe scară largă sunt:
părtinire și varianță
Găsiți valorile implicite pentru implementarea -print în cazul în care condițiile sunt adevărate dacă expresia nu utilizează niciunul dintre -ok, -exec, -print sau -print0.
Operatori
Operatorii îmbunătățesc expresiile de comandă find. Ele sunt menționate în ordinea descrescătoare a priorității:
- expr1 expr2 (sau expr1 -a expr2 : AND. expr2 nu este evaluată dacă expr1 este falsă.
- expr1 -o expr2 : SAU. expr2 nu este evaluată dacă expr1 este adevărată.
Exemple ale comenzii find
Să vedem următoarele exemple ale comenzii find:
- Găsiți fișiere după nume
- Găsiți fișiere după tip
- Găsiți fișiere mai noi
- Găsiți și ștergeți un fișier
- Găsiți un director
- Găsiți fișiere după momentul modificării
- Găsiți fișiere cu permisiunea
- Găsiți și înlocuiți fișierele
- Găsiți text în mai multe fișiere
Găsiți fișiere după nume
Putem căuta toate fișierele care se termină cu extensia „.txt”. Pentru a face acest lucru, executați comanda de mai jos:
find . -name '*.txt'
Comanda de mai sus va lista toate fișierele text din directorul de lucru curent. Luați în considerare rezultatul de mai jos:
Din rezultatul de mai sus, toate fișierele care au extensia „.txt” sunt listate cu comanda find.
Găsirea fișierelor după tip
Parametrul „-type” este utilizat pentru a specifica tipul de fișier.
Unele dintre tipurile de fișiere sunt după cum urmează:
- f: fișier obișnuit
- d: director
- l: legături simbolice
- c: dispozitive de caractere
- b: blocarea dispozitivelor
Luați în considerare comanda de mai jos:
find . -type d -name '*.bak'
Comanda de mai sus va lista toate directoarele cu extensia „.bak”. Luați în considerare rezultatul de mai jos:
Din rezultatul de mai sus, comanda „find . -type d -name „*.bak” afișează toate directoarele care se termină cu „.bak”.
Găsiți fișiere mai noi
Parametrul „-newer” ajută la căutarea fișierelor care sunt mai noi decât fișierul menționat. Luați în considerare comanda de mai jos:
find . -newer msg.txt
Comanda de mai sus va afișa toate fișierele care sunt mai noi decât „msg.txt” din directorul de lucru curent. Luați în considerare rezultatul de mai jos:
Din rezultatul de mai sus, toate fișierele afișate sunt mai noi decât fișierul „msg.txt”.
Găsiți și ștergeți un fișier
Opțiunea „-delete” este folosită pentru a șterge un anumit fișier. Trebuie să fim foarte atenți când folosim această comandă, deoarece nu există nicio opțiune de anulare dacă este odată executată. Luați în considerare comanda de mai jos:
find . -name Demo.txt -delete
Comanda de mai sus va șterge fișierul „Demo.txt” din directorul de lucru curent. Luați în considerare rezultatul de mai jos:
Găsiți un director
Opțiunea „type -d” este folosită pentru a găsi un director. Luați în considerare comanda de mai jos:
find . type -depth -name Newdirectory
Comanda de mai sus va găsi locația „Newdirectory”. Luați în considerare rezultatul de mai jos:
Găsiți fișiere după momentul modificării
Opțiunea „-mtime”, urmată de numărul de zile, este folosită pentru a găsi fișierele prin modificare. Numărul de zile poate fi pozitiv sau negativ. Valoarea negativă va fi folosită pentru mai puțin decât -1 este folosit pentru ultima zi și, în mod similar, +1 va găsi fișierul pentru mai mult de o zi în urmă. Luați în considerare comanda de mai jos:
find ./Newdirectory -mtime -1
Comanda de mai sus va găsi fișierele care sunt modificate în ultima zi. Luați în considerare rezultatul de mai jos:
Găsiți fișiere cu permisiunea
Opțiunea „-perm” este folosită pentru a găsi fișiere cu permisiunea. Executați comanda find cu opțiunea „-perm” și transmiteți valoarea necesară. Luați în considerare comanda de mai jos:
find ./ -perm 777
Comanda de mai sus va lista fișierele din directorul specificat pe care toată lumea le-ar putea citi, scrie și executa.
Găsiți și înlocuiți fișierele
Pentru a găsi și înlocui fișiere, trebuie să combinăm comanda find cu comanda sed. Pentru a opera pe fișiere, utilizați opțiunea „-exec” cu comanda find. Luați în considerare comanda de mai jos:
find ./Newdirectory -type f -exec sed -i 's/find/replace/g' {} ;
din comanda de mai sus, apariția specificată va fi înlocuită. Luați în considerare rezultatul de mai jos:
Găsiți text în mai multe fișiere
Putem face o altă combinație a comenzii find cu comanda grep pentru a găsi textul din diferitele fișiere. Luați în considerare comanda de mai jos:
find ./Newdirectory -type f -name '*.txt' -exec grep 'demo' {} ;
Comanda de mai sus va găsi liniile care conțin textul „demo” din toate fișierele text din directorul „Newdirectory”. Luați în considerare rezultatul de mai jos:
Din rezultatul de mai sus, putem vedea că liniile cu textul „demo” au fost afișate.
java long la int
Căutați în fiecare director
$ find / -name file1 -type f -print
Comanda de mai sus găsește toate directoarele pentru un fișier obișnuit al cărui titlu este fișier1 și îl tipărește pe ecran. În general, nu este o idee bună să căutați fișiere în acest fel. Poate dura mult timp. Deci, cel mai bine este să menționați directorul. Câteva sisteme de operare pot monta sisteme de fișiere (dinamice) care nu sunt favorabile comenzii find. Numele de fișiere mai complicate care conțin caractere unice pentru shell poate necesita să fie închise între ghilimele simple.