În sistemele de operare Linux, comanda find poate fi folosit pentru a căuta fișiere și directoare de pe computer. Pentru a continua, selectați un link din lista următoare sau parcurgeți fiecare secțiune în ordine.
pentru a utiliza find, începeți prin deschiderea unei sesiuni terminale pentru a accesa linia de comandă.
funcționalitatea de bază a find
rularea find fără opțiuni produce o listă a fiecărui fișier și director în și sub directorul de lucru., De exemplu, dacă directorul dvs. de lucru este / home/hope/Documents, executați find outputs următoarele:
- fiecare fișier din/home/hope / Documents.
- fiecare subdirector din / home/hope / Documents.
- fiecare fișier din fiecare dintre aceste subdirectoare.
să o vedem în acțiune., În primul rând, să verificați directorul nostru de lucru, cu ajutorul pwd comanda:
pwd
/home/hope/Documents
Acum, hai să fugim găsi fără nici opțiuni:
find
În acest exemplu, vom vedea un total de zece fișiere și patru subdirectoare în și sub folderul Documente.
observați că ieșirea începe cu un singur punct, care reprezintă directorul de lucru., Rularea găsi fără opțiuni este la fel ca precizând că de căutare ar trebui să înceapă în directorul de lucru, astfel:
find .
exemplul De mai sus este „corectă” mod de a utiliza găsi. Dacă încercați să-l utilizați pe un alt sistem de operare similar Unix, cum ar fi FreeBSD, specificarea unui director este necesară. Este o practică bună să folosiți această formă a comenzii.,
specificând unde să căutați
pentru a lista doar fișierele și subdirectoarele care sunt conținute în directorul/home/hope/Documents/images, specificați primul argument al comenzii ca:
find /home/hope/Documents/images
observați că calea completă este afișată și în rezultate.,
Dacă directorul nostru de lucru este /home/speranță/Documente, putem folosi următoarea comandă, care își găsește aceleași fișiere:
find ./images
Dar de această dată, de ieșire reflectă locația de pornire de căutare și arată ca aceasta:
în mod implicit, căutarea arată în fiecare subdirector de locul de plecare. Dacă doriți să restricționați câte niveluri de subdirector să căutați, puteți utiliza opțiunea-maxdepth cu un număr.
de exemplu, specificarea-maxdepth 1 caută numai în directorul în care începe căutarea., Dacă se găsesc subdirectoare, acestea sunt listate, dar nu căutate.,
find . -maxdepth 1
../images./bigfiles.txt./gimp-2.8.16.tar.bz2./hp-fanfic./archlinux-2016.02.01-dual.iso
Specificarea -maxdepth 2 căutările directorul și un subdirector adânci:
find . -maxdepth 2
Specificarea -maxdepth 3 căutările un nivel mai adânc decât că:
find . -maxdepth 3
Găsirea de nume
Pentru a restrânge rezultatele de căutare pentru a se potrivi doar fișierele și directoarele care au un anumit nume, utilizați -numele opțiune și a pus numele în ghilimele:
find . -name "picard.jpg"
./images/memes/picard.jpg
de asemenea, puteți utiliza metacaractere, ca parte a dvs. de nume de fișier., De exemplu, pentru a găsi toate fișierele al căror nume se termină în .jpg, puteți utiliza un asterisc pentru a reprezenta restul numelui fișierului. Când executați comanda, shell-ul va glob numele de fișier în ceva care se potrivește cu modelul:
find . -name "*.jpg"
./images/hp/snape.jpg./images/hp/harry.jpg./images/memes/winteriscoming.jpg./images/memes/picard.jpg
Observați că porunca noastră nu lista de fișiere a căror prelungire (în acest caz, JPG) este în majuscule. Asta pentru că, spre deosebire de alte sisteme de operare, cum ar fi Microsoft Windows, Numele fișierelor Linux sunt sensibile la majuscule.,”>
Pentru a lista doar directoare și omite nume de fișier, specificați -tip d:
find . -type d
../images./images/hp./images/memes./hp-fanfic
Găsirea de fișiere bazate pe dimensiunea
De exemplu, pentru a găsi fișiere care sunt „mai mult de 50 de kilobytes”, folosiți -size +50k:
find . -size +50k
./images/memes/winteriscoming.jpg./gimp-2.8.16.tar.bz2./archlinux-2016.02.01-dual.iso
Pentru fișiere „mai mare decât 10 mb”, folosiți -size +10M:
find . -size +10M
./gimp-2.8.16.tar.bz2./archlinux-2016.02.01-dual.iso
Pentru „mai mare decât 1 gigabyte”, folosiți -size +1G:
find . -size +1G
./archlinux-2016.02.01-dual.iso
Pentru fișierele într-o anumită gamă de dimensiuni, folosesc două opțiuni de dimensiune., De exemplu, pentru a găsi fișiere „mai mare de 10 mb, dar mai mici decât 1 gigabyte”, specifica -size +10M -dimensiuni -1G:
find . -size +10M -size -1G
./gimp-2.8.16.tar.bz2
Găsirea de fișiere bazate pe modificarea, accesul, sau schimbare de stare
– mtime opțiune limitează căutare de câte zile de când conținutului fișierului au fost modificate. Pentru a specifica zilele din trecut, utilizați un număr negativ., De exemplu, pentru a găsi numai acele fișiere care au fost modificate în ultimele două zile (48 de ore), utilizați -mtime -2:
find . -mtime -2
– mmine opțiune face același lucru, dar în termeni de minute, nu de zile. De exemplu, această comandă afișează numai fișierele modificate în ultima jumătate de oră:
find . -mmin -30
O opțiune similară este -ctime, care verifică atunci când un fișier statut a fost schimbat ultima, măsurat în zile. O schimbare de stare este o modificare a metadatelor fișierului. De exemplu, schimbarea permisiunilor unui fișier este schimbarea stării.,
opțiunea-cmin caută o schimbare de stare, măsurată în minute.de asemenea, puteți căuta când a fost accesat ultima dată un fișier — cu alte cuvinte, când conținutul său a fost vizualizat cel mai recent. Opțiunea-atime este utilizată pentru a căuta fișiere pe baza timpului de acces cel mai recent, măsurat în zile.opțiunea-amin efectuează aceeași restricție de căutare, dar măsurată în minute.dacă efectuați o căutare foarte mare, poate doriți să salvați rezultatele căutării într-un fișier, astfel încât să puteți vedea rezultatele mai târziu., Puteți face acest lucru prin modificarea găsi ieșire la un fișier:
find . -iname "*.jpg" > images.txt
puteți deschide apoi rezultatele într-un editor de text, sau să le imprimați cu comanda cat.
cat images.txt
Alternativ, puteți țeavă de ieșire la tee de comandă, care imprimă ieșire la ecran și scrie-l într-un fișier:
find . -size +500M | tee bigfiles.txt
./archlinux-2016.02.01-dual.iso
cat bigfiles.txt
./archlinux-2016.02.01-dual.iso
a Suprima mesajele de eroare
este posibil să primiți mesajul de eroare „acces refuzat” atunci când se efectuează o căutare., De exemplu, dacă veți căuta în directorul rădăcină ca un utilizator normal:
find /
Veți primi acest mesaj de eroare dacă găsiți încearcă să acceseze un fișier contul de utilizator nu are permisiunea de a citi. Puteți efectua căutarea ca superuser (root), care are acces complet la fiecare fișier din sistem. Dar nu este recomandat să faceți lucrurile ca rădăcină, cu excepția cazului în care nu există alte opțiuni.,
Dacă tot ce trebuie să faceți este de a ascunde „Permission denied” de mesaje, puteți adăuga 2&>1 | grep -v „Permission denied” la sfârșitul de comanda, astfel:
find / 2>&1 | grep -v "Permission denied"
exemplul De mai sus filtrează „Permission denied” mesaje de la dvs. de căutare. Cum?
2>&1 este un speciale de redirecționare, care trimite mesaje de eroare la ieșire standard pentru țevi combinate linii de ieșire pentru comanda grep., grep-v efectuează apoi o potrivire inversă pe „Permisiune refuzată”, afișând numai linii care nu conțin acel șir.redirecționarea și utilizarea grep pentru a filtra mesajele de eroare este o tehnică utilă atunci când „Permisiune refuzată” aglomerează rezultatele căutării și nu puteți efectua căutarea ca root.
Exemple
find ~/. -name "*.txt" -amin -120
găsiți toate fișierele din Directorul de acasă și sub care se termină în extensia „.txt”. Afișează numai fișierele accesate în ultimele două ore.,
find . -name "*.zip" -size +10M -mtime -3
găsiți toate fișierele din Directorul de lucru și sub al cărui nume are extensia „.zip ” și a cărui dimensiune este mai mare de 10 megaocteți. Afișați numai fișierele al căror conținut a fost modificat în ultimele 72 de ore.
find . -iname "*report*" -type f -maxdepth 2
efectuați o căutare insensibilă la majuscule pentru fișierele care conțin cuvântul „raport” în numele lor. Dacă căutarea găsește un director cu „raport” în numele său, nu îl afișați. Căutați numai în directorul de lucru și un nivel de director sub el.,
find / -name "*init*" 2>&1 | grep -v "Permission denied" | tee ~/initfiles.txt
găsiți toate fișierele din sistem al căror nume conține „init”, suprimând mesajele de eroare. Afișează rezultatele pe ecran și de ieșire-le într-un fișier în directorul de acasă numit „initfiles.txt”.
Lasă un răspuns