Comandă Linux Locate pentru începători (8 exemple)

În timp ce find este, fără îndoială, unul dintre cele mai populare și puternice utilitare de linie de comandă pentru căutarea de fișiere în Linux, nu este suficient de rapid pentru situațiile în care aveți nevoie de rezultate instantanee. Dacă doriți să căutați un fișier în sistem prin intermediul liniei de comandă, iar viteza este cea mai mare prioritate, atunci există o altă comandă pe care o puteți utiliza: Locate.

În acest tutorial, vom discuta comanda locate folosind exemple ușor de înțeles. Vă rugăm să rețineți că toate instrucțiunile/exemplele menționate aici au fost testate pe Ubuntu 16.04 LTS, iar versiunea locate pe care am folosit-o este 0.26.

Cum se utilizează comanda locate în Linux

Comanda locate este foarte ușor de utilizat. Tot ce trebuie să faceți este să îi treceți numele de fișier pe care doriți să îl căutați.

locate 

De exemplu, dacă vreau să caut toate numele de fișiere care au în ele șirul de caractere ‘dir2’, atunci pot face acest lucru folosind locate în felul următor:

Nota: Comanda ‘locate dir2’ (fără asteriscuri) va fi de asemenea suficientă deoarece locate înlocuiește implicit numele pe care îl treceți (să zicem NAME) cu *NAME*.

Cum funcționează comanda locate sau, de ce este atât de rapidă

Motivul pentru care locate este atât de rapid este că nu citește sistemul de fișiere pentru numele fișierului sau al directorului căutat. De fapt, se referă la o bază de date (pregătită de comanda updatedb) pentru a găsi ceea ce caută utilizatorul și, pe baza acestei căutări, își produce rezultatul.

În timp ce aceasta este o abordare bună, are partea sa de dezavantaje. Principala problemă este că, după fiecare fișier sau director nou creat pe sistem, trebuie să actualizați baza de date a instrumentului pentru ca acesta să funcționeze corect. În caz contrar, comanda nu va putea găsi fișierele/directoarele care sunt create după ultima actualizare a bazei de date.

De exemplu, dacă încerc să găsesc fișiere cu nume care conțin șirul de caractere ‘tosearch’ în directorul ‘Downloads’ al sistemului meu, comanda find produce un rezultat în ieșire:

Dar când încerc să efectuez aceeași căutare folosind comanda locate, aceasta nu produce niciun rezultat.

Acest lucru înseamnă că baza de date în care locate caută nu a fost actualizată după ce fișierul a fost creat pe sistem. Așadar, haideți să actualizăm baza de date, ceea ce se poate face folosind comanda updatedb. Iată cum se face acest lucru:

sudo updatedb

Și acum, când execut din nou aceeași comandă locate, aceasta afișează fișierele în ieșire:

În mod similar, după ce un fișier sau un director a fost eliminat, trebuie să vă asigurați că baza de date locate a fost actualizată, deoarece, în caz contrar, comanda va continua să afișeze fișierul în ieșire atunci când îl caută.

Cum se face ca locate să tipărească numărul sau numărul de intrări potrivite în ieșire

După cum am văzut, comanda locate produce în ieșire numele fișierelor potrivite împreună cu căile lor complete sau absolute. Dar, dacă doriți, puteți face ca instrumentul să suprime toate aceste informații și, în schimb, să tipărească doar numărul sau numărul de intrări corespunzătoare. Acest lucru se poate face folosind opțiunea de linie de comandă -c.

Cum să forțați locate să tipărească numai acele intrări care corespund fișierelor existente

Așa cum am discutat deja mai devreme în acest articol, dacă un fișier este eliminat din sistem, atunci până când actualizați din nou baza de date locate, comanda va continua să afișeze acel nume de fișier în ieșire. Cu toate acestea, pentru acest caz specific, puteți sări peste actualizarea bazei de date și să aveți în continuare rezultate corecte în ieșire folosind opțiunea de linie de comandă -e.

De exemplu, am eliminat fișierul ‘filetosearch.txt’ din sistemul meu. Acest lucru a fost confirmat de comanda find, care nu a mai fost capabilă să caute fișierul:

Dar când am efectuat aceeași operațiune folosind locate, acesta încă afișa fișierul în ieșire:

Și știm de ce – pentru că baza de date a lui locate nu a fost actualizată după ce fișierul a fost șters. Cu toate acestea, utilizarea opțiunii -e a rezolvat problema:

Iată ce spune pagina de manual locate despre această opțiune: „Tipărește numai intrările care se referă la fișiere existente în momentul în care locate este rulat.”

Cum se face ca locate să ignore distincțiile dintre majuscule și minuscule

În mod implicit, operațiunea de căutare pe care o efectuează comanda locate este sensibilă la majuscule și minuscule. Dar puteți forța instrumentul să ignore distincțiile între majuscule și minuscule folosind opțiunea de linie de comandă -i.

De exemplu, am două fișiere pe sistemul meu, numite ‘newfiletosearch.txt’ și ‘NEWFILETOSEARCH.txt’. Deci, după cum puteți vedea, numele fișierelor sunt identice, doar că literele lor sunt diferite. Dacă îi cereți lui locate să caute, să zicem, „*tosearch*”, atunci va afișa doar numele cu minuscule în ieșire:

Dar utilizarea opțiunii de linie de comandă -i forțează comanda să ignore majusculele, iar ambele nume de fișiere sunt produse în ieșire:

Cum se separă intrările de ieșire cu ASCII NUL

În mod implicit, intrările de ieșire pe care le produce comanda locate sunt separate folosind caracterul newline (\n). Dar, dacă doriți, puteți schimba separatorul, și să aveți ASCII NUL în loc de newline. Acest lucru se poate face folosind opțiunea de linie de comandă -0.

De exemplu, am executat aceeași comandă pe care am folosit-o în ultima secțiune de mai sus, dar am adăugat opțiunea de linie de comandă -0:

Așa puteți vedea că separatorul newline nu mai este acolo – a fost înlocuit cu NUL.

Cum să vizualizați informații despre baza de date locate

În cazul în care doriți să știți ce bază de date folosește locate, precum și alte statistici despre baza de date, utilizați opțiunea de linie de comandă -S.

Cum să căutați un nume de fișier exact folosind locate

În mod implicit, atunci când căutați un nume de fișier folosind locate, atunci numele pe care îl treceți – să spunem NUME – este înlocuit implicit cu *NAME*. De exemplu, dacă caut un nume de fișier ‘testfile’, atunci toate numele care se potrivesc cu *testfile* sunt produse în ieșire:

Dar dacă cerința este de a căuta fișiere cu nume care se potrivesc exact cu ‘testfile’? Ei bine, în acest caz, va trebui să folosiți expresii regulate, care pot fi activate cu ajutorul opțiunii din linia de comandă -r. Așadar, iată cum puteți căuta doar ‘testfile’ folosind expresii regulate:

locate -r /testfile$

Dacă sunteți nou în domeniul expresiilor regulate, mergeți aici.

Concluzie

Locate oferă mult mai multe opțiuni, dar cele discutate aici ar trebui să fie suficiente pentru a vă oferi o idee de bază despre utilitarul de linie de comandă, precum și pentru a vă ajuta să începeți. Vă sfătuim să încercați mai întâi toate opțiunile descrise aici pe mașina dumneavoastră Linux, iar apoi să treceți la altele pe care le puteți găsi în pagina de manual a instrumentului.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.