Actualizat: 11/30/2020 de Calculator Speranță

Î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.

notă

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”.