find
este o comandă pentru filtrarea recursivă a obiectelor din sistemul de fișiere bazată pe un mecanism condițional simplu. Utilizați find
pentru a căuta un fișier sau un director în sistemul dvs. de fișiere. Folosind steagul -exec
, fișierele pot fi găsite și imediatprocesate în cadrul aceleiași comenzi.,
Find Linux Files by Name or Extension
Use find
from the command line to locate a specific file by name or extension., Următorul exemplu de căutări pentru *.err
fișiere în /home/username/
director și toate subdirectoarele:
find /home/username/ -name "*.err"
ar trebui să vedeți o ieșire similară în consolă:
/home/username/example.errThe matching file in the /home/username/ directory is "example.err"
Comune Linux Găsi Comenzi și Sintaxa
find
comanda, de obicei, are următoarea formă:
find options starting/path expression
-
options
atribut controlează comportamentul și metodă de optimizare afind
proces., -
starting/path
atribut definește nivelul de top directorul undefind
începe filtrarea. -
expression
atribut controlează testele care caută ierarhia director pentru a produce ieșire.
găsiți un fișier în Linux folosind numele fișierului
pentru a găsi un fișier folosind numele fișierului, utilizați sintaxa find -name filename
. Omiterea căii caută fișierul pe întregul disc., De exemplu, puteți găsi un fișier numit example.err
situat în /home/username
director cu următoarea comandă:
find -name example.err
ar trebui să vedeți o ieșire similară:
./username/example.err
Găsi un Fișier în Directorul Curent Folosind Comanda
uită-te la exemplul structura de directoare și fișiere. Acestea sunt menționate în exemplele acestui ghid.,vrei pentru a găsi fișierul example.err
în directorul sau oricare dintre subdirectoarele sale, puteți emite următoarea comandă:
find . -name example.err
ieșire seamănă cu următorul:
./example.err./directory_1/example.err
ieșire reflectă directory_1
structura de directoare:
├── directory_1│ ├── subdirectory_1│ │ └── example.err│ └── example.err
Găsi Fișierele de Imagine în Linux Folosind Linia de Comanda
Corelarea structura de fișiere în secțiunea anterioară, există o imagine pe nume image01.png
care se află la rădăcina (/
)s a structurii de directoare.,
Pentru a găsi fișierul image01.png
, executați următoarele find
comanda care localizează toate .png
fișierele stocate în interiorul /
director.
find -name *.png
ar trebui să vedeți o ieșire similară:
./image01.png
Modificați tipul de fișier imagine și căutați pentru orice .jpg
fișiere în directorul rădăcină (/
):
find -name *.jpg
ieșire seamănă exemplu., Consultați structura de directoare de exemplu din secțiunea anterioară pentru a vizualiza locația fișierului.
./web_files/unnamed.jpg
Găsi un Fișier Gol în Directorul Dvs. Folosind Linia de Comanda
Pentru a găsi un fișier gol în directorul dvs. folosind linia de comandă, emite următoarea comandă:
find . -type f -empty
Dacă nu de ieșire este returnat, atunci nu există un fișier gol în directorul curent.
Opțiuni și Optimizări pentru Găsirea Fișierelor în Linux Folosind Linia de Comanda
configurare implicite pentru find
ignoressymbolic link-uri., Dacă vrei find
pentru a urmări și de a reveni link-uri simbolice, se adaugă -L
opțiunea de a comanda, așa cum se arată mai jos:
find -O3 -L /var/www/ -name "*.html"
Această comandă permite optimizarea maximă de nivel (-O3
) și vă permite find
să urmați link-uri simbolice (-L
). find
căutări întregul arbore de directoare de sub /var/www/
pentru fișierele care se termină cu .html
.,
find
optimizează strategia de filtrare pentru a crește performanța. Trei selectabile de utilizator nivele de optimizare sunt specificate ca -O1
, -O2
și -O3
. -O1
optimizare este implicit și forțele find
pentru a filtra pe baza fișierului înainte de a rula toate celelalte teste.,
Optimizarea la -O2
nivel prioritizează filename filtre, ca în -O1
, și apoi se execută toate de tip fișier de filtrare înainte de a continua cu altele mai mari consumatoare de resurse condiții. Nivelul -O3
optimizare permite find
pentru a efectua cele mai severe de optimizare și reordona toate testele pe baza lor relative de cheltuieli și probabilitatea lor de succes.,
Command | Description |
---|---|
-O1 |
Filter based on filename first (default). |
-O2 |
File name first, then file-type., |
-O3 |
Permite find automat re-comandă de căutare bazate pe utilizarea eficientă a resurselor și probabilitatea. de succes |
-maxdepth X |
Căutare directorul curent precum și toate sub-directoarele X niveluri de adâncime. |
-iname |
Căutare fără a ține seama de textul caz., |
-not |
Return only results that do not match the test case. |
-type f |
Search for files. |
-type d |
Search for directories., |
Găsi Fișiere în Linux prin Modificarea Timp Folosind Linia de Comanda
find
comanda poate filtra un director ierarhie bazată pe când un fișier a fost modificat ultima dată., De exemplu, următoarea comandă găsește orice fișier cu .err
extensia care a fost modificat în ultimele 7 zile:
find / -name "*err" -mtime -7
exemplu de comandă returnează următorul rezultat:
Folosiți Grep pentru a Găsi Fișiere în Linux Folosind Linia de Comanda
find
comanda este doar capabil de a filtra directorul ierarhie bazată pe un fișier numele și metadate. Dacă trebuie să căutați pe baza conținutului fișierului, utilizați un instrument cum ar figrep., Luați în considerare următorul exemplu:
find . -type f -exec grep "test" '{}' \; -print
Aceasta comanda căutări fiecare obiect în directorul curent ierarhie (.
) care este un fișier (-type f
) și apoi se execută comanda grep "test"
pentru fiecare fișier care îndeplinește condițiile. Fișierele care se potrivesc sunt tipărite pe ecran (-print
). Acolade buclat ({}
) Sunt un substituent pentru rezultatele find meci., {}
sunt închise în ghilimele simple ('
) pentru a evita predarea grep
un malformat filename. -exec
comanda este terminată cu un punct și virgulă (;
), care ar fi scăpat (\;
) pentru a evita interpretarea de către shell.
fișierul folosit în exemplu (example.err
) are text în interiorul acestuia care spune”test”., Când executați comanda exemplu, vedeți o ieșire similară:
Grep a identificat fiecare fișier din Directorul de lucru curent care conține șirul „test”.,
Nota
Înainte
find
comandă punerea în aplicare a-exec
opțiune, care ar putea genera o ieșire similară cu exemplul de mai sus folosindxargs
command:find . -type f -print | xargs grep "test"
Proces și pentru a Găsi Fișierele Folosind Comanda find în Linux
-exec
opțiune execută comenzile împotriva fiecare obiect care se potrivește find
expresie., Luați în considerare următorul exemplu:
find . -name "example.err" -exec chmod o+r '{}' \;
Acest filtrele fiecare obiect în ierarhia actuală (.
) pentru fișiere numit rc.conf
și se execută chmod o+r
comandă pentru a modifica permisiunile de fișiere de find
comandă rezultatele.
comanda exemplu rulează și execută opțiunea -exec
din directorul rădăcină al procesului find
. Utilizați -execdir
pentru a executa comanda specificată în directorul în care se află meciul., Acest lucru poate atenua problemele de securitate și poate produce performanțe mai bune pentru unele operațiuni.
-exec
sau -execdir
opțiuni rula fără alte solicitări. Dacă preferați să vi se solicite, înainte de se iau măsuri, înlocuiți -exec
cu -ok
sau -execdir
cu -okdir
.
cum să găsiți și să ștergeți fișierele folosind linia de comandă Linux
atenție
utilizați această opțiune cu precauție extremă.,
Adăugați opțiunea -delete
la sfârșitul unui meci de exprimare pentru a șterge toate fișierele care se potrivesc. Utilizați această opțiune atunci când sunteți sigur că rezultatele se potrivesc numai cu fișierele pe care doriți să le ștergeți.
În exemplul de mai jos, find
recursiv localizează toate fișierele într-o ierarhie pornind de la directorul curent și șterge toate fișierele care se termină cu .err
extensie:
find . -name "*.err" -delete
Încă mai am câteva întrebări?,
Alăturați-vă comunității noastre și postați întrebările dvs. pentru alți entuziaști Linode și Linux pentru a vă ajuta.
întrebări similare: