Linux find
comanda este un instrument puternic care permite administratorilor de sistem să localizeze și să gestioneze fișiere și directoare pe baza unei game largi de criterii de căutare. Poate găsi directoare și fișiere după numele lor, tipul lor sau extensia, dimensiunea, permisiunile etc.
pe lângă localizarea fișierelor și directoarelor, combinarea comenzii find
cu alții vă permite să acționați asupra rezultatelor., Adăugarea -exec
opțiune permite sysadmins pentru a rula comenzi externe și de a efectua acțiuni, cum ar fi copierea, mutarea, ștergerea, sau modificarea permisiunilor de fișiere care corespund criteriilor specificate, cum ar fi dimensiunea, numele, etc.
în acest articol, vom începe prin a explica comenzile de bază Linux find cu exemple. Acest lucru vă va arăta cum să găsiți fișiere și directoare. Vă vom arăta apoi cum să utilizați opțiunea -exec
pentru a acționa asupra fișierelor sau directoarelor în funcție de dimensiunea, permisiunile etc.,
sintaxa generală pentru comanda find este
find {path} {name -of-file or dir-to-search} {action-to-take}
unde,
în acest tutorial, vă vom explica cum să localizați fișierele și directoarele care se potrivesc tiparelor specificate. Vom vedea, de asemenea, cum să efectuați acțiuni asupra fișierelor sau directoarelor pe care le localizează comanda find. Ghidul se bazează pe Ubuntu, dar este aplicabil majorității distribuțiilor și versiunilor Linux.
găsiți fișiere și directoare
găsiți fișiere specifice după nume sau extensie
pentru a căuta un anumit fișier, executați următoarea comandă din rădăcină ( / )., Comanda conține numele exact pentru fișierul pe care îl căutați.
find . -name file22.txt
Ieșire
./test/file22.txt./sales/file22.txt
vă Rugăm să rețineți că rezultatele includ calea. Acest lucru este important dacă nu cunoașteți directorul în care se află fișierul sau când se află în mai multe locuri.
de asemenea, puteți căuta fișierul într-un alt director în timp ce încă în locația curentă. În acest caz, trebuie să furnizați calea pentru directorul în care doriți să căutați.,
find ./test -name file22.txt
căutând fișiere specifice într-un alt director
În cazul nostru, vom căuta toți cei care încep cu fișierul de Litere din Directorul de testare.
find ./test -name file*
Ieșire
./test/file22.txt./test/file30.doc./test/file1.txt./test/file5,doc
Căutare pentru fișiere cu extensia
Pentru a găsi un fișier în Linux cu o anumită extensie, adăugați-l la comandă.,
find . -name *.txt
Ieșire
./test/subtest/subfil.txt./test/file22.txt./test/file1.txt./home1/files32.txt./home2/file22.txt./qa/tags.txt
Găsi fișierele și directoarele cu nume
Utilizați comanda de mai jos pentru a uita-te pentru fișiere și directoare, începând cu literele qa
. In calculatorul nostru, avem qatree.txt
și qa.txt
fișiere, precum și un director cu numele qa
.,
Dacă vom rula comanda;
find ./ -name "qa*"
Se revine la următoarea ieșire
./test/qatree.pdf./test/qa.txt./home/qa
comanda întoarce atât fișiere și directoare care corespund criteriilor de căutare. Pentru a găsi numai fișiere sau directoare, trebuie să specificați acest lucru în comandă.
găsiți numai fișiere sau directoare
doar pentru fișiere, utilizați comutatorul type f
.
numai Fișiere
find ./ -type f -name "qa*"
Ieșire
./test/qatree.pdf./test/qa.txt
doar Directoare
se Adaugă type d
opțiune pentru a localiza doar directoare.,
find ./ -type d -name "qa*"
Ieșire
./home/qa
Caz insensibil găsi comanda
Toate căutările cu -name
comutare sunt cazuri sensibile și nu va da rezultate cu majuscule. Pentru a obține toate cazurile, utilizați opțiunea -iname
.
find ./ -iname "qa*"
Ieșire
./test/qatree.pdf./test/qa.txt./test/QAtest.txt./home/qa
Căutați un fișier din mai multe directoare
Pentru a găsi fișierele în directoare diferite, adăugați-le căi în comandă., În cazul nostru, vom verifica directoarele test
și numeric
.
find ./test ./numeric -name file22.txt -type f
Ieșire
./test/file22.txt/root/numeric/file22.txt
Găsiți mai multe fișiere cu diferite extensii din toate directoarele
puteți folosi comanda find pentru a localiza mai multe fișiere care împărtășesc diferite extensii, cum ar fi *.doc
, *.txt
*.pdf
, etc. Acest lucru se poate face separat, o extensie la un moment dat sau folosind o singură comandă care include Toate extensiile dorite.,
find . -type f ( -name "*.txt" -o -name "*.pdf" -o -name "*.doc" )
ieșire
Găsi fișiere care conțin un anumit text
Uneori, doriți să accesați un fișier care conține un anumit text, dar nu-și poate aminti numele său de fișier sau locație. Această comandă vă permite să găsiți toate fișierele care conțin textul țintă.
pentru A căuta toate fișierele care conțin cuvântul hyperconvergence”, a folosi;
find / -type f -exec grep -l -i "hyperconvergence" {} ;
Ieșire
/root/numeric/hci/root/HCIP
–eu opțiune permite comanda pentru a ignora cazurile și va găsi textul dacă majuscule sau nu, adică hyperconvergence, Hyperconvergence , etc.,
Pentru a uita-te pentru fișiere într-un anumit director, pur și simplu adăugați-l la comandă
find ./numeric -type f -exec grep -l -i "hyperconvergence" {} ;
Ieșire
./numeric/hci
Găsi Fișiere și Directoare în funcție de Dimensiuni
puteți găsi toate fișierele sau directoarele care sunt mai mici, egale sau mai mari decât o anumită dimensiune, într-un anumit interval sau gol. Utilizați formatul de dimensiune corespunzător în funcție de tipul de fișiere sau directoare pe care le căutați.,nd fișiere de o anumită dimensiune egală cu 30 MB
de Căutare Pentru a găsi toate 30MB fișiere
find / -size 30M
Găsi fișiere mai mari decât o anumită dimensiune
find -size +2M
Ieșire
. /Downloads/ubuntu18043.iso ./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c
Găsi fișierele mai puțin de 10 MB în directorul curent
find . -type f -size -10M
Găsi fișiere cu dimensiuni între 100-200MB
atunci Când căutați fișiere într-un interval specific, cum ar fi între 100 și 200 MB
find / -size +100M -size -200M
Uita-te pentru directoare mai mare decât 20kb
find / -type d -size +20k
Găsi gol fișiere și directoare.,
Fișiere
find ./ -type f -size 0
sau
find ./ -type f –empty
Directoare
find ./ -type d –empty
Găsi fișierele de vârstă sau de timpul de modificare
Găsi fișierele mai vechi de n zile
find /path/ -type f -name '*.txt' -mtime +8
-mtime +8
va arata pentru txt
fișiere care sunt mai vechi de 8 zile.,
De data modificării
Acesta va căuta fișierele modificate în ultimele 17 ore
find . -mtime -17 -type f
se Pare pentru directoare a modificat în ultimele 10 zile,
find . -mtime -10 -type d
Găsi fișiere bazate pe acces sau modificare
Găsi fișiere bazate pe o dată sau accesate. Acest lucru vă permite să vedeți fișiere care au fost sau nu au fost accesate într-o anumită perioadă.pentru a vedea fișierele care nu au fost accesate în ultimele 10 zile în directorul principal.,
find /home -atime +10
Fișiere accesate exact 10 zile în urmă
find /home -atime 10
Accesate în ultimele 10 zile,
find /home -atime -10
Găsi fișierele modificate în ultimele n zile
puteți, de asemenea, uita-te pentru fișiere în /home
director modificat în ultimele 10 zile, folosind comanda;
find /home -mtime -10
Găsi fișierele modificate într-o anumită perioadă.
de exemplu, toate fișierele modificate între 6 și 15 zile în urmă în directorul acasă.,
find /home -type f -mtime +6 -mtime -15
Fișiere și directoare accesate în ultimele 10 minute
Pentru a găsi fișierele accesate în ultimele 10 minute, utilizați -amin opțiune.
find . -amin -10 -type f
Ieșire
./.bash_history./.profileroot@ubuntu1804:~#
Directoare accesate în ultimele 10 minute
find . -amin -10 -type d
Găsi fișierele care se potrivesc cu anumite permisiuni
Sintaxa
$ find -perm mode
În cazul în care modul este permisiunea care este fie numeric, cum ar fi 644, 655, 700, 777
, etc, sau litere, cum ar fi u=x, a=r+x,
etc.,
puteți specifica modul în următoarele trei moduri diferite.
- fără prefix atunci când doriți să găsiți fișiere cu permisiunile exacte specificate.
- cu „
-
” pentru fișiere cu cel puțin permisiunea specificată. Aceasta returnează fișierele cu permisiunile specificate, precum și cu permisiunile suplimentare mai mari. - folosind „
/
” necesită specificarea proprietarului sau grupului cu permisiunea fișierului.,
Găsi fișiere cu permisiunea 777
find -perm 777
Ieșire
./file1
Găsi fișiere cu cel puțin 766
găsiți -perm -766
Ieșire
./file2./file1
comanda caută toate fișierele în care
- fișierul proprietarul a citi/scrie/permisiuni de executare.
- grup are permisiuni de citire/scriere
- alții au permisiune de citire / scriere
ca atare, returnează două fișiere care îndeplinesc acest criteriu – file1 și file2., Fișierele nu trebuie să aibă exact 766
permisiuni și pot avea altele suplimentare, atâta timp, dar trebuie să aibă cel puțin specificat.
Găsi fișierele de scriere de către proprietar
Vom folosi acum „/
” pentru a arata pentru fișiere permisiuni de scriere, fie de către proprietarul lor, sau de grup, sau altele.
find -perm /222../file2./file3./file1
cele de mai sus caută fișiere care pot fi scrise fie de proprietar, fie de grup.
aceasta returnează fișiere care pot fi scrise de oricare, dar nu neapărat de ambele. Pentru a vedea fișierele, în cazul în care ambele au permisiuni inscriptibile, utilizați – prefix.,
./file2./file1
Găsi fișierele deținute de un utilizator
pentru a Găsi toate fișierele deținute de Jack
find /home -user jack
Ieșire
/home/jack/home/jack/examples.desktop/home/jack/.gnupg/home/jack/.gnupg/private-keys-v1.d/home/jack/ans.cgi
Găsi anumite fișiere deținute de un utilizator
Găsi toate fișierele de text detinut de Jack
find /home -user jack -iname "*.txt"
Ieșire
/home/jack/docs/file32.txt
Găsi și lista de fișiere și directoare împreună cu permisiunile lor,
find -name "*.conf" | ls -l
Ieșire
Găsi și de a acționa asupra rezultatelor
În această secțiune, ne vom uita la modul în care puteți acționa pe fișierele care se potrivesc cu modelul specificat în comanda find.,
găsiți fișiere și modificați permisiunile
găsiți și modificați permisiunile anumitor tipuri de fișiere. În cazul nostru, vom lucra cu fișiere PHP cu permisiuni diferite, așa cum se arată mai jos.,
acum Vom căuta toate fișierele PHP (de mai sus) și înlocuirea lor permissions cu 755
find ver -name "*.php" -type f -exec chmod 755 {} ;
comanda arata pentru PHP fișiere în ver
director și apoi stabilește permisiunea lor să 755
(rwxr-xr-x
)
Rezultate
Găsi și de a schimba fișiere și director permissions
Găsi fișiere cu 644 de permisiuni și schimbați-le pentru a avea 655 permissions
find . -type f -perm 644 -exec chmod 655 {} ;
de asemenea, puteți căuta directoare cu 644 de permisiuni și înlocuiți-o cu 755.,
find . -type d -perm 644
Ieșire
./docs
docs are permisiuni 644
drwxrwxr-x 2 jack jack 4096 Jan 3 12:45 docs
pentru a seta La 755
, vom rula
find . -type d -perm 644 -exec chmod 755 {} ;
Acum putem verifica din nou pentru a vedea exact ceea ce 755
find . -type d -perm 755
Ieșire
.
./ docs
de sus putem vedea că directoarele root și docs au permisiunile 755.,
Ls –la
comandă vă oferă următoarele detalii
drwxr-xr-x 2 jack jack 4096 Jan 3 12:45 docs
Găsi și copia fișiere sau directoare
Găsi și copia un anumit fișier la un director
comanda De mai jos va găsi file22.tx
t de fișiere și copiați-l în ~/tmp/images
director.,
find -iname file22.txt -exec cp {} ~/tmp/images ;
Găsi și copia un singur tip de fișiere într-un director
Pentru a găsi fișiere, cum ar fi imagini cu jpg
extensia în directorul curent și copiați-le într-o altă locație ca un dosar de imagini, utilizați;
find -iname '*.jpg' -exec cp {} ~/tmp/images ;
Acest lucru va găsi și copia toate fișierele jpg la ~/tmp/images
folder.
găsiți și copiați un fișier în mai multe directoare
găsiți și copiați un singur în mai multe directoare.,
find ~/tmp/dir1/ ~/tmp/dir2/ $HOME/3/ -maxdepth 0 -exec cp ~/numeric/hci {} ;
Acest lucru va găsi fișierul fișierul și copiați-l în trei directoare de /tmp/dir1/ /tmp/dir2/
și $HOME/3/
Găsi și pentru a muta fișierele într-un director diferit
Pentru a muta un fișier cunoscut de la un director la altul., Pentru a muta universal.php
file;
find ~/folder/ -type f -name universal.php -exec mv {} ~/numeric/ ;
Căutare și pentru a muta fișierele cu o anumită extensie într-un folder diferit
find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/ ;
Găsi anumite fișiere, și de a trece la un anumit folder diferit
find -type f -name uni*.* -exec mv {} ~/unifiles/ ;
comanda caută toate fișierele cu nume care încep cu uni
și au orice extensie. Apoi le mută în directorul /unifiles/
găsiți și mutați fișierele în funcție de vârstă
găsiți și mutați fișierele mai vechi decât zilele specificate într-o altă locație, cum ar fi arhiva.,
find /path/ -type f -name '*.pdf' -mtime +20 -exec mv {} /backup1/ ;
aceasta va căuta fișiere pdf mai vechi de 20 de zile și le va muta în directorul backup1.,fișiere și directoare
sintaxa pentru găsirea și eliminarea fișierelor sau directoarelor din directorul curent este
find . -type f -name "file to delete" -exec rm -f {} ;
pentru a șterge fișiere sau numai
find . -type d -name "dir-to-delete" -exec rm -rf {} ;
pentru a șterge directoarele doar
Găsi și șterge fișiere specifice numai
Pentru a găsi și șterge fișierele începând cu til, utilizare;
find . -type f -name "til*" -exec rm {} ;
Pentru a găsi și șterge directoare începând cu til
find . -type d -name "til*" -exec rm {} ;
Scoateți ambele fișiere și directoare
find . -name "til*" -exec rm -rf {} ;
Acest lucru va elimina ambele fișiere și directoare incepand cu litere til.,
ștergeți prin extensie
mai jos este modul în care puteți localiza și șterge toate fișiereletxt
din directorul curent. Înlocuiți txt
cu altă extensie, cum ar fi bak
, pdf
sau orice alte care doriți să o eliminați.
find . -type f -name "*.txt" -exec rm -f {} ;
În cazul în care doriți ca sistemul să vă solicite să confirmați înainte de a șterge fiecare fișier, adăugați opțiunea-i ca mai jos.,
find . -type f -name "*.txt" -exec rm -i {} ;
Ieșire
în mod implicit, -rm
nu va elimina directoare și aveți nevoie pentru a utiliza –r
opțiune pentru a asigura o recursive de îndepărtare. Aceasta asigură ștergerea directoarelor goale și a celor care conțin fișiere. Opțiunea -f
forțează eliminarea și este utilizată atât pentru fișiere, cât și pentru Directoare.
găsiți și ștergeți fișiere mai vechi de n zile
găsiți și ștergeți fișiere de rezervă mai vechi de 20 de zile din directorul curent.,
find . -type f -name '*.bak' -mtime +20 -exec rm {} ;
aceasta va șterge toate fișierele .bak
mai vechi de 20 de zile.
Găsi și șterge directoare doar
Pentru a șterge un director numit dir22
find . -type d -name dir22 -exec rm -rf {} ;
a se Asigura că se potrivesc cu nume de director caz sau de a folosi -iname
opțiune.
find . -type d -iname Dir22 -exec rm -rf {} ;
Elimină atât Dir22
și dir22
Pentru a confirma înainte de ștergere, utilizați opțiunea-i.
find . -type d -iname Dir22 -exec rm -rf -i {} ;
ieșire
rm: eliminați directorul”./ Dir22′?, n
rm: eliminați directorul”./ dir22′? y
În cazul nostru, am tastat n
pentru director Dir22
care nu vor fi șterse și y
pentru dir22
care va fi acum eliminate.puteți utiliza oricare dintre următoarele comenzi pentru a localiza fișierele goale și a le șterge automat.
find ./ -type f -size 0 -exec rm -f {} ;
sau
găsi ./ – tip f-size 0 / xargs rm-f
sau
găsi .,/- type f –size 0-delete
găsiți și eliminați directoarele goale
pentru a elimina directoarele goale, vom folosi opțiunea d
.
find ./ -type d -empty -exec rmdir {} ;
o altă alternativă este de a utiliza șterge în loc de a elimina.
find ./ -type d -empty -delete
rețineți că ștergerea sistemului sau a fișierelor critice de pe computer poate deteriora sistemul de operare sau aplicațiile sau poate duce la pierderea datelor importante.
pentru a evita ștergerile accidentale, este cea mai bună practică să utilizați un cont de utilizator non-root., De asemenea, asigurați-vă că ștergeți fișierele potrivite care nu sunt utile și că aveți o copie de rezervă a tuturor fișierelor dvs. de date doar în caz.
ce urmează?
încercați comenzile de găsire Linux de mai sus în laboratorul dvs. sau în mediul non-producție. Vedeți dacă puteți utiliza unele pentru a automatiza curățarea sistemului de fișiere cu Crontab. Și, pentru a stăpâni Linux, consultați acest curs online.