Android

Cum să găsiți fișiere în linux folosind linia de comandă

Linux/Mac Terminal Tutorial: How To Use The find Command

Linux/Mac Terminal Tutorial: How To Use The find Command

Cuprins:

Anonim

Comanda Find este unul dintre cele mai puternice instrumente din arsenalul administratorilor sistemului Linux. Acesta caută fișiere și directoare într-o ierarhie de directoare pe baza unei expresii date de utilizator și poate efectua acțiuni specificate de utilizator pe fiecare fișier asociat.

Puteți utiliza comanda find pentru a căuta fișiere și directoare în funcție de permisiunile, tipul, data, proprietatea, dimensiunea și multe altele. Poate fi folosit și în combinație cu alte instrumente, cum ar fi grep sau sed .

Linux find Sintaxa de comandă

Sintaxa generală a comenzii find este următoarea:

find

  • Atributul options controlează tratamentul legăturilor simbolice, opțiunile de depanare și metoda de optimizare. path… atributul definește directorul de pornire sau directoarele unde găsirea va căuta în fișiere. Atributul de expression este format din opțiuni, modele de căutare și acțiuni separate de operatori.

Pentru a căuta fișierele dintr-un director, utilizatorul care invocă comanda find trebuie să aibă permisiuni de citire în acel director.

Să aruncăm o privire la următorul exemplu:

find -L /var/www -name "*.js"

  • Opțiunea -L (opțiuni) indică comanda find să urmeze legături simbolice. /var/www (calea…) specifică directorul care va fi căutat. -name "*.js (expresia) -name "*.js spune că find fișierele de căutare care se termină cu .js (fișiere JavaScript).

Găsiți fișiere după nume

Găsirea fișierelor după nume este probabil cea mai frecventă utilizare a comenzii find . Pentru a găsi un fișier după numele său, opțiunea -name urmat numele fișierului pe care îl căutați.

De exemplu, pentru a căuta un fișier numit document.pdf în directorul /home/linuxize , utilizați următoarea comandă:

find /home/linuxize -type f -name document.pdf

Pentru a rula o căutare nesensibilă cu majuscule, schimbați opțiunea -name cu -iname :

find /home/linuxize -type f -iname document.pdf

Comanda de mai sus se va potrivi cu „Document.pdf”, „DOCUMENT.pdf”..etc.

Găsiți fișiere după extensie

Căutarea fișierelor prin extensie este aceeași cu căutarea fișierelor după nume. De exemplu, pentru a găsi toate fișierele care se termină cu .log.gz în directorul /var/log/nginx puteți utiliza:

find /var/log/nginx -type f -name '*.log.gz'

Este important de menționat că atunci când utilizați caracterul wildcard, trebuie să citați modelul sau să scăpați simbolul asterisk * cu spatele \ pentru a nu fi interpretat de shell.

Pentru a găsi toate fișierele care nu se potrivesc cu regex *.log.gz puteți utiliza opțiunea *.log.gz . De exemplu, pentru a găsi toate fișierele care nu se termină în *.log.gz ați utiliza:

find /var/log/nginx -type f -not -name '*.log.gz'

Găsiți fișiere după tip

Uneori poate fi necesar să căutați anumite tipuri de fișiere, cum ar fi fișiere normale, directoare sau simboluri. În Linux, totul este un fișier.

Pentru a căuta fișiere în funcție de tipul acestora, utilizați opțiunea -type și unul dintre următorii descriptori pentru a specifica tipul de fișier:

  • f : un fișier obișnuit d : director l : link simbolic c : dispozitive cu caractere b : dispozitive de blocare p : pipe pipe (FIFO) s : socket

De exemplu, pentru a găsi toate directoarele din directorul de lucru curent, utilizați:

find. -type d

Exemplul obișnuit ar fi schimbarea recursivă a permisiunilor fișierului site-ului web la 644 și permisiunile directorului la 755 folosind comanda chmod :

find /var/www/my_website -type d -exec chmod 0755 {} ; find /var/www/my_website -type f -exec chmod 0644 {} ;

Găsiți fișiere după dimensiune

Pentru a găsi fișiere bazate pe dimensiunea fișierului, treceți parametrul -size împreună cu criteriile de mărime. Puteți utiliza următoarele sufixe pentru a specifica dimensiunea fișierului:

  • b : blocuri de 512 octeți (implicit) c : octeți w : cuvinte din doi octeți k : Kilobytes M : Megabytes G : Gigabytes

Următoarea comandă va găsi toate fișierele cu exact 1024 octeți în directorul /tmp :

find /tmp -type f -size 1024c

Comanda Find vă permite, de asemenea, să căutați fișiere mai mari sau mai mici decât o dimensiune specificată.

În următorul exemplu, căutăm toate fișierele mai mici de 1MB din directorul de lucru curent. Observați simbolul minus înainte de valoarea dimensiunii:

find. -type f -size -1M

find. -type f -size +1M

Puteți căuta chiar și fișiere într-un interval de dimensiuni. Următoarea comandă va găsi toate fișierele între 1 și 2MB :

find. -type f -size +1M -size 21M

Găsiți fișiere după data modificării

Comanda Find poate căuta, de asemenea, fișiere pe baza ultimei modificări, accesare sau schimbare a timpului.

La fel ca atunci când căutați după dimensiune, utilizați simbolurile plus și minus pentru „mai mare decât” sau „mai puțin decât”.

Să zicem că acum câteva zile, ați modificat unul dintre fișierele de configurare dovecot, dar ați uitat care. Puteți filtra cu ușurință toate fișierele din directorul /etc/dovecot/conf.d care se încheie cu .conf și au fost modificate în ultimele cinci zile cu:

find /etc/dovecot/conf.d -name "*.conf" -mtime 5

Iată un alt exemplu de filtrare a fișierelor bazate pe data modificării folosind opțiunea -daystart . Comanda de mai jos va enumera toate fișierele din directorul /home care au fost modificate acum 30 sau mai multe zile:

find /home -mtime +30 -daystart

Găsiți fișiere după permisiuni

Opțiunea -perm vă permite să căutați fișiere pe baza permisiunilor de fișiere.

De exemplu, pentru a găsi toate fișierele cu permisiuni de exact 775 în directorul /var/www/html , ar trebui să utilizați:

find /var/www/html -perm 644

Puteți prefixa modul numeric cu minus - sau slash / .

Când slash / este folosit ca prefix, atunci cel puțin o categorie (utilizator, grup sau altele) trebuie să aibă cel puțin biții respectivi pentru un fișier care să se potrivească.

Luați în considerare următorul exemplu de comandă:

find. -perm /444

Comanda de mai sus va potrivi toate fișierele cu permisiunile de citire setate fie pentru utilizator, grup sau pentru alții.

Dacă minus - este folosit ca prefix, atunci pentru ca fișierul să corespundă cel puțin biților specificați trebuie să fie setat. Următoarea comandă va căuta fișierele care au permisiunea de citire și scriere pentru proprietar și grup și care pot fi citite de alți utilizatori:

find. -perm -664

Găsiți fișiere de proprietar

Pentru a găsi fișierele deținute de un anumit utilizator sau grup, utilizați opțiunile -user și -group .

De exemplu, pentru a căuta toate fișierele și directoarele deținute de utilizator linuxize , ar trebui să rulați:

find / -user linuxize

Iată un exemplu din lumea reală. Să zicem că doriți să găsiți toate fișierele deținute de www-data și să schimbați proprietatea fișierelor potrivite de la www-data la nginx :

find / -user www-data -type f -exec chown nginx {} ;

Găsiți și ștergeți fișierele

Pentru a șterge toate fișierele care se potrivesc, adăugați opțiunea-ștergeți la sfârșitul expresiei de potrivire.

Asigurați-vă că utilizați această opțiune numai atunci când sunteți sigur că rezultatul se potrivește cu fișierele pe care doriți să le ștergeți. Este întotdeauna o idee bună să imprimați fișierele potrivite înainte de a utiliza opțiunea -delete .

De exemplu, pentru a șterge toate fișierele care se termină cu .temp din /var/log/ ați folosi:

find /var/log/ -name `*.temp` -delete Folosiți opțiunea -delete cu precauție extremă. Linia de comandă Find este evaluată ca expresie și dacă adăugați mai întâi opțiunea -delete , comanda va șterge totul sub punctele de pornire specificate.

Când vine vorba de directoare, find poate șterge doar directoarele goale la fel ca rmdir .

Concluzie

V-am arătat cum puteți utiliza comanda find cu diferite opțiuni și criterii.

Acest articol ar trebui să vă ofere o înțelegere fundamentală a modului de localizare a fișierelor în sistemele dvs. Linux. Puteți vizita, de asemenea, pagina de căutare a manului și puteți citi despre toate celelalte opțiuni puternice ale comenzii find .

găsi terminal