Modalități de utilizare a comenzii find pentru a căuta în directoare mai eficient


Acest tutorial vă va ghida prin diferitele moduri de a găsi un director în Linux. După cum probabil știți deja, în căutarea unui fișier sau a unui director.

Există mai multe mijloace și utilitare diferite utilizate pentru căutarea fișierelor pe linia de comandă, cum ar fi găsirea, localizarea și care. Cu toate acestea, ultimul utilitar (care) este folosit doar pentru localizarea unei comenzi.

În scopul acestui tutorial, ne vom concentra în principal pe utilitarul de căutare, care caută fișiere pe un sistem de fișiere Linux live și este mai eficient și mai fiabil în comparație cu locate.

Dezavantajul locate este că citește una sau mai multe baze de date create de updatedb, nu caută printr-un sistem de fișiere live. În plus, nu oferă la fel de bine flexibilitate în ceea ce privește de unde să căutați (punctul de plecare).

Mai jos este sintaxa pentru rularea comenzii locate:

# locate [option] [search-pattern]

Pentru a demonstra dezavantajul locate, să presupunem că căutăm un director numit pkg în directorul de lucru curent.

Notă: în comanda de mai jos, opțiunea --basename sau -b spune localizați pentru a se potrivi numai cu numele de bază al fișierului (director) (care este exact pkg), dar nu și calea (/path/to/pkg). Acolo unde \ este un caracter global, dezactivează înlocuirea implicită a pkg cu *pkg*.

$ locate --basename '\pkg'

După cum puteți vedea din rezultatul comenzii de mai sus, locate va căuta începând cu directorul rădăcină (/), de aceea se potrivesc alte directoare cu același nume.

Prin urmare, pentru a rezolva această problemă, utilizați găsește urmând sintaxa simplificată de mai jos:

$ find starting-point options [expression]

Să ne uităm la câteva exemple.

Pentru a căuta același director (pkg) de mai sus, în directorul de lucru curent, rulați următoarea comandă, unde flagul -name citește expresia care în acest caz este nume de bază director.

$ find . -name "pkg"

Dacă întâmpinați erori „Permisiune refuzată”, utilizați comanda sudo astfel:

$ sudo find . -name "pkg"

Puteți împiedica găsirea să caute alte tipuri de fișiere, cu excepția directoarelor, utilizând flag -type pentru a specifica tipul de fișier (în comanda de mai jos, d înseamnă director) după cum urmează:

$ sudo find . -type d -name "pkg"

În plus, dacă doriți să listați directorul într-un format de listare lungă, utilizați comutatorul de acțiune -ls:

$ sudo find . -type d -name "pkg" -ls

În continuare, opțiunea -iname va activa o căutare fără majuscule și minuscule:

$ sudo find . -type d -iname "pkg" 
$ sudo find . -type d -iname "PKG" 

Pentru a găsi informații de utilizare mai interesante și avansate, citiți paginile de manual ale găsiți și localizați.

$ man find
$ man locate

Ca o ultimă observație, comanda find este mai fiabilă și mai eficientă pentru căutarea fișierelor (sau directoarelor) într-un sistem Linux atunci când este comparată cu comanda locate.

La fel ca și înainte, nu uitați să ne trimiteți feedbackul sau întrebările dvs. prin secțiunea de comentarii de mai jos. În cele din urmă, rămâneți întotdeauna conectat la Tecmint.