acest tutorial se concentrează pe modul de a găsi fișiere pe Linux folosind comanda Găsire și localizare.ca administrator de sistem, este o sarcină foarte frecventă să căutați un anumit fișier în sistemul dvs. de fișiere.cu toate acestea, ar putea fi uneori greu să găsiți fișiere pe un sistem de fișiere Linux, mai ales dacă aveți zeci de utilizatori diferiți.există două comenzi care vă pot ajuta să vă atingeți obiectivul : găsiți și localizați.,în acest tutorial, vom vedea cum să folosim eficient aceste comenzi și cum pot fi reglate pentru a obține ceea ce căutăm.
Cuprins
Găsi Fișiere folosind comanda
Primul mod de a găsi și localiza fișierele de pe un sistem Linux este de a utiliza comanda find.,
în mod implicit, comanda find este disponibil pe toate distribuțiile și are următoarea sintaxă:
$ find <options> <path> <expression>
sfat Rapid : ai unele probleme să-și amintească dacă calea sau expresia vine mai întâi? amintiți-vă că pentru grEP este calea expresiei, iar find este opusul, deci expresia căii!
Find este o comandă destul de puternică, deoarece are mai multe opțiuni decât comanda locate.
Iată toate posibilitățile funcției find pe Linux.,
Find files with find by filename
cea mai obișnuită utilizare a funcției find este de a localiza fișierele având în vedere numele lor de fișiere.
$ find <path> -name <pattern>
principala diferență între a găsi și a localiza atunci când vine vorba de căutarea fișierelor este că find va căuta nume de fișiere în timp ce locate va căuta căi către Fișier.
de exemplu, dacă ne întoarcem la exemplul runlevel pe care l-am folosit înainte, iată cum să căutăm fișiere runlevel folosind comanda find.,
$ find / -name runlevel*
Ce „2> /dev/null” parte?
am redirecționat eroarea de ieșire către / dev / null folosind redirecționarea ieșirii pentru a evita mesajele de eroare de pe consolă.
Găsi fișiere folosind găsi de filetype
Ca anterior am discutat în articolul nostru de pe hard si soft link-uri, fișiere sunt atribuite tipuri de fișiere și este folosit ca o modalitate de a le diferenția.,
Iată o recapitulare a tuturor tipurilor de fișiere utilizate pe Linux.
- f : un fișier standard
- d : un folder sau un director
- l : o legătură simbolică sau o legătură soft
- b : dispozitive bloc (cum ar fi un hard disk, de exemplu)
- c : dispozitive de caractere (porturi seriale, plăci de sunet)
- p : țeavă numită
- s : soclu
fișiere după tipul de fișier cu comanda find.
$ find <path> -type <filetype>
de exemplu, dacă căutăm toate legăturile simbolice de pe gazdă, vom emite următoarea comandă.,
$ find / -type l
parametrii pot fi combinați, de exemplu dacă caut toate legăturile simbolice ale căror nume de fișiere se termină cu „.service ” (pentru a izola toate serviciile systemd, de exemplu), aș rula următoarea comandă.
$ find / -type l -name *.service
Găsi fișiere utilizând un model (pentru extensii)
în mod Similar pentru a localiza comandă, vă sunt capabili de a găsi fișiere pe Linux, folosind un model.
ca un memento, un model este un șir de caractere care include globbing (cum ar fi*,?,, sau intervale).
această opțiune este în special atunci când încercați să găsiți fișiere având o extensie, de exemplu fișiere Javascript.
Pentru a găsi fișiere pe Linux folosind un model, executați următoarea comandă
$ find <path> -name ".<extension>"
$ find / -name "*.js"
Fișiere fișiere pe Linux de către proprietar
Uneori, vrei pentru a izola fișiere create de un anumit utilizator.
când ștergeți un utilizator de pe gazda dvs., poate doriți să ștergeți toate fișierele asociate cu acest utilizator, de exemplu.,uneori, utilizatorii creează fișiere din directorul lor de acasă și ștergerea unui director de utilizator de acasă nu este suficientă de la sine.în consecință, pentru a găsi fișiere create de un anumit utilizator pe Linux, executați următoarea comandă
$ find <path> -user <user>
de exemplu, pentru a găsi toate fișierele deținute de „john” pe gazda mea, aș rula următoarea comandă.
$ find / -user john
Acum, dacă vreau să ștergeți toate fișierele deținute de către john cu o simpla comanda?,
se poate realiza cu ușurință folosind steagul de ștergere.
$ find / -user john -delete
găsiți fișiere pe Linux după permisiuni
folosind comanda find, puteți găsi și localiza fișiere care au anumite permisiuni pe gazda dvs.
$ find <path> -perm <permissions>
ca un memento, iată cum funcționează permisiunile de fișiere pe Linux.
pentru a găsi toate fișierele care au permisiuni complete (a 777 având în vedere notația binară), puteți rula următoarea comandă.,
$ find / -perm 777
poate fi destul de util dacă din motive de securitate doriți să inspectați dacă niciun fișier nu este configurat cu permisiuni complete pe sistemul dvs.
Găsi fișiere cu find de dimensiuni
un Alt mod foarte util pentru a găsi și localiza fișierele de pe Linux este de a găsi comanda cu opțiunea de dimensiune.
opțiunea dimensiune vă permite să căutați fișiere care sunt exact dimensiunea pe care o specificați, mai mare decât o anumită dimensiune sau mai mică decât o anumită dimensiune.,
pentru A căuta fișiere de dimensiuni, utilizați următoarea comandă
$ find <path> -size <size>
dimensiunea este definită de următoarele prefixe :
- c: bytes
- b: 512-byte blocuri
- k: Kilobytes
- M: Megaocteți
- G: Gigabytes
puteți specifica un „+” dacă sunteți în căutarea pentru fișiere mai mari decât dimensiunea specificată.,
De exemplu, în scopul de a găsi fișierele mai mari de 1 GB pe sistemul dvs., executați următoarea comandă
$ find / -size +1G
Pentru a găsi fișierele mai mici decât 10 MBs pe sistemul dvs., executați următoarea comandă
$ find / -size -10M
în cele din Urmă, pentru a căuta fișiere care sunt exact dimensiunile specificate în interogare, tu nu ar trebui să adăugați orice plus sau minus prefixe la comanda.
$ find / -size 1024k
comanda doar definit va găsi toate fișierele care sunt exact 1024 Kbs în dimensiune pe gazdă.,
găsiți fișiere pe Linux după data modificării
folosind find, puteți găsi și fișiere date cu o dată de modificare, recentă sau nu.această comandă este foarte utilă și folosită destul de des de administratorii de sistem pentru a găsi fișiere sau directoare care au fost modificate recent.
pentru A căuta fișiere folosind găsi de data modificării, executați următoarea comandă
$ find <path> -mtime <time>
în cazul în Care timpul reprezintă fișierele modificate 24*<timp> ore în urmă. în consecință, timpul este exprimat în zile.,
în mod Similar la dimensiunea opțiune, puteți adăuga un „plus” sau un „minus” operator la timp pentru a căuta fișiere modificate mai mult de <timp> zile în urmă, sau mai puțin decât <timp> zile în urmă.
de exemplu, pentru a căuta fișiere modificate exact cu 3 ore în urmă, veți executa următoarea comandă.,
$ find / -mtime 3
Pentru a găsi fișierele modificate mai mult decât cu o săptămână în urmă, ai fi executați următoarea comandă
$ find / -mtime +7
Pentru a găsi fișierele modificate cu mai puțin de două zile în urmă, va rula următoarea comandă
$ find / -mtime -2
Găsi fișiere cu dinamică de adâncime
după Cum ați observat, probabil, de la începutul acestui tutorial, vom da exemple de fișiere de căutări pornind de la directorul rădăcină.în consecință, toate folderele sunt răsfoite recursiv., cu toate acestea, putem restricționa numărul de directoare călătorite recursiv dintr-un director, aceasta se numește adâncime.
Pentru a limita căutarea de fișiere la o anumită adâncime, executați următoarea interogare
$ find <path> -maxdepth <depth>
Ca un exemplu, aici este cum puteți restricționa fișiere căutări la directorul curent, cu copii directoare a fi accesat.
$ find / -maxdepth 1
puteți combina în mod evident această comandă cu steagul de nume pentru a căuta fișiere cu un nume dat în directorul curent.,
$ find . -maxdepth 1 -name *.tar
Înlănțuirea găsi cu -exec
În unele cazuri, ați putea găsi utile pentru lanțul de comanda cu exec unul.
opțiunea exec poate fi utilizată pentru a lega mai multe comenzi împreună : luând rezultatul primei ca intrare a celei de-a doua.,
Să spunem, de exemplu, că doriți să găsiți toate fișierele modificate cu mai puțin de un minut în urmă
$ find /home/user -mmin -1./file1
Acum, să presupunem că doriți să ștergeți toate fișierele care au fost modificate în mai puțin de un minut în urmă.
puteți înlănțui comanda find cu opțiunea-exec folosind această sintaxă.
$ find /home/user -mmin -1 -exec echo rm -f '{}' \;
Noi, evident, în primul rând „echo” rezultatele ca vrem să ne asigurăm că suntem ștergerea fișierele corecte.,când sunteți gata să ștergeți acele fișiere, eliminați pur și simplu comanda echo.
$ find /home/user -mmin -1 -exec rm -f '{}' \;
găsiți fișiere pe Linux folosind comanda Locate
o altă modalitate excelentă de a găsi și localiza fișiere pe Linux este să utilizați comanda locate.
Premise
Dacă găsiți comandă în care nu sunt disponibile pe sistemul dvs., asigurați-vă că pentru a citi secțiunea următoare pentru a obține localiza rulează pe sistemul dumneavoastră.,
4 – A-instalarea Locate pe distribuțiile bazate pe APT și RPM
pentru a instala locate, veți avea nevoie de privilegii sudo pe gazda Linux.
pentru a verifica dacă locate este instalat pe gazda dvs., executați comanda locate în linia de comandă.,
$ locate
Dacă localizarea este instalat pe computer, se va aștepta o expresie a oferit
Dacă localizarea nu este instalat pe host, un mesaj de eroare va fi afișat
Pentru a instala localiza pe Ubuntu 18.04 și Debian 10, executați următoarea comandă.,
$ sudo apt-get install mlocate
în mod similar, dacă sunteți pe o distribuție bazată pe CentOS sau Fedora, executați următoarea comandă pentru a instala locate.
$ sudo yum install mlocate
b – Actualizarea mlocate baza de date
localiza funcția lucrează cu o bază de date locală stocate pe sistemul de fișiere care stochează fiecare nume de fișier de gazdă.
când efectuați o comandă de localizare, locate va căuta în baza de date pregătită de updatedb pentru fișierul pe care îl căutați.
periodic, un job cron actualizează mlocate.fișier db pentru tine de a căuta cele mai recente intrări.,
baza de date este localizată la/var/lib/mlocate / mlocate.db în mod implicit și fișierul de configurare updatedb este stocat la /etc/updatedb.conf.pentru moment, puteți lăsa opțiunile implicite și puteți rula o simplă comandă updatedb pentru actualizarea bazei de date.
$ sudo updatedb
a Localiza fișierele de date un nume de model
Cele mai de bază mod de a găsi fișiere pe Linux este de a oferi un model pentru a localiza comanda.,
în mod implicit, sintaxa comenzii locate este următoarea
$ locate ... ...
Dacă sunteți în căutarea unui anumit fișier de configurare pe sistemul dvs., o modalitate ușoară de a-l găsi este să furnizați numele său complet de fișier comenzii locate.
$ locate updatedb.conf
după Cum puteți vedea, localizați comanda se întoarce complet de căi de fișier sunt în căutarea pentru.,
localizați fișierele în directoare restricționate
uneori, este posibil să nu aveți acces la unele directoare din sistemul dvs.în consecință ,nu veți putea localiza fișierele localizate în acesta.să luăm exemplul unui folder interzis care conține un fișier numit „fișier restricționat”.
Pentru a localiza fișierele situat pe restricționată directoare, trebuie să rulați localiza comanda cu sudo privilegii.,
$ sudo locate restricted-file
Localiza fișierele folosind un model
Utilizarea localiza comandă, puteți să ofere „modele”, în formă de expandarea caractere.caracterele Globbing, numite și metacaractere, sunt caractere utilizate pentru a potrivi una sau mai multe intrări cu o expresie simplificată.cel mai popular este „*” care se va potrivi cu orice caracter, inclusiv nici unul.
Iată un tabel de recapitulare pentru globbing caractere și funcțiile lor.,6934f1″>
ab
cab
runlevel
runlevel1, runlevel2, runlevel6
As an example, here’s a way to locate all text files on your system.,
$ locate *.txt
Localiza fișierele folosind o expresie regulată
după Cum se menționează în monitorul oficial pagina de manual pentru a localiza, de a localiza comanda acceptă un model ca o intrare.
aceasta înseamnă că sunteți în măsură să furnizeze o expresie regulată la comanda localiza.
pentru a găsi și localiza fișiere dat un regex, utilizați opțiunea-regex pentru comanda localiza.,
$ locate --regex <regex>
de exemplu, pentru a izola toate fișierele care încep cu runlevel urmat de un număr, veți executa următoarea comandă.
$ locate --regex runlevel+
atunci Când se utilizează regexes, există un punct important pe care ar trebui să fie conștienți de atunci când a localiza fișierele.
comanda locate caută căi către fișiere în baza sa de date locală., în consecință ,atunci când căutați fișiere, trebuie să știți că expresia dvs. obișnuită trebuie să se potrivească cu calea către fișier și nu doar cu numele fișierului.
de exemplu, dacă caut fișiere care încep cu „run”, niciun rezultat nu va fi returnat, deoarece calea către Fișier începe cu „/usr”.
Localiza fișierele folosind majuscule opțiune
atunci Când căutați pentru fișierele de pe sistemul de fișiere, este posibil să nu fi sigur despre modul în care un anumit fișier a fost numit.,
a fost scris cu majuscule sau cu litere mici? Conține litere mari?
pentru a găsi și localiza fișiere folosind o opțiune insensibilă la majuscule, adăugați opțiunea-i la comanda dvs. de localizare.,
$ locate -i <file_pattern>
Căutare în fișierele de conținut folosind grep
În unele cazuri, ați putea fi interesat în căutarea pentru fișierele care se potrivesc unui anumit cuvânt din propoziție, care este situat în INTERIORUL fișierului.
Acest lucru se poate întâmpla, de exemplu, dacă încercați să găsiți fișierul care conține anumite evenimente jurnal.,
primul mod De a căuta fișierele care se potrivesc unui anumit cuvânt este folosind comanda grep
$ grep -r <pattern> <path>
Notă : nu uita „-r” opțiune dacă sunteți în căutarea de fișiere prin directoare întregi.
de exemplu., dacă sunteți în căutarea toate fișierele având o „eroare” în conținutul lor, situat în directorul tau de casa, trebuie să tastați
$ grep -r error /home/user
În unele cazuri, poate doriți să găsiți fișierele dat o expresie regulată.pentru a găsi fișiere folosind o expresie regulată, utilizați opțiunea” – E”.,
$ grep -r -E <expression> <path>
Să spunem, de exemplu, că doriți să găsiți fișierul de potrivire ” abc ” model într-unul dintre dosare, trebuie să tastați
$ grep -r -E "abc.*" --color /home/user
Notă : opțiunea de culoare este utilizat în scopul de a evidenția meciuri folosind comanda grep.,
Găsi fișiere folosind pe care
un Alt mod minunat de a localiza fișierele de pe Linux este de a utiliza cea care comandă.
comanda care este utilizată pentru a localiza fișierele asociate cu o anumită comandă.acest lucru poate deveni foarte util atunci când nu știți unde ați stocat binarele pentru o comandă sau dacă trebuie să localizați o comandă pentru a o adăuga în calea dvs.,
$ which <command>
De exemplu, în scopul de a căuta fișiere asociate „ls” de comandă, tastați
$ which ls/usr/bin/ls
după Cum puteți vedea, sunt date de calea completă a fișierului.
localizați binare folosind whereis
în mod similar, este complet posibil să căutați fișiere utilizând comanda whereis.comanda „whereis” poate fi văzută ca un superset al comenzii” which”:” whereis ” oferă informații despre numele comenzii, locația fișierului, precum și locația paginilor manuale.,
pentru a executa whereis, pur și simplu tastați „whereis” și adăugați numele comenzii dvs.
$ whereis lsls: /usr/bin/ls /usr/share/man/man1/ls.1.gz
destul de la îndemână!
concluzie
în tutorialul de astăzi, ați învățat cum puteți găsi și localiza fișiere pe Linux folosind două comenzi importante: localizați și găsiți.chiar dacă opțiunea a fost prezentată individual, trebuie să vă amintiți că acestea pot fi combinate pentru a putea specifica și mai mult fișierele pe care le căutați.ca întotdeauna, dacă sunteți interesat de administrarea sistemului Linux, avem o secțiune completă dedicată Linux pe site-ul nostru.,
As always, here is a short video on the subject in case you prefer Youtube videos.