Găsirea este un instrument puternic de linie de comandă 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 fișiere după numele lor, tipul lor, sau extensie, dimensiune, permisiuni etc.


Pe lângă localizarea fișierelor și directoarelor, combinarea comenzii find cu altele vă permite să luați măsuri asupra rezultatelor. Adăugarea opțiunii -exec permite sysadmins să ruleze comenzi externe și să efectueze acțiuni precum copierea, mutarea, ștergerea sau schimbarea permisiunilor fișierelor care corespund criteriilor specificate, cum ar fi dimensiunea, numele, etc..

În acest articol, vom începe prin explicarea comenzilor de bază de găsire cu exemple. Aceasta vă va arăta cum puteți găsi fișiere și directoare. Vă vom arăta apoi cum să folosiț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 sau dir-to-search} {action-to-take}

Unde,

  • calea specifică directorul.
  • nume-de fișier sau dir-la-căutare: numele fișierului sau directorului de căutat
  • acțiune de luat: cum ar fi copierea, ștergerea, mutarea etc.

În acest tutorial, vă vom explica cum să localizați fișierele și directoarele care se potrivesc cu tiparele specificate. Vom vedea, de asemenea, cum să efectuați acțiuni în fișierele sau directoarele localizate de comanda find. Ghidul se bazează pe Ubuntu, dar este aplicabil majorității distribuțiilor și versiunilor Linux.

Contents

Găsiți fișiere și directoare

Găsiți fișiere specifice după nume sau extensie

Pentru a căuta un fișier specific, rulați următoarea comandă de la root (/). Comanda conține numele exact pentru fișierul pe care îl căutați.

găsi . -name file22.txt

producție

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

Puteți căuta fișierul într-un alt director în timp ce sunteți încă în locația curentă. În acest caz, trebuie să furnizați calea pentru directorul în care doriți să căutați.

găsiți ./test -name file22.txt

Căutați fișiere specifice într-un alt director

În cazul nostru, vom căuta toate cele care încep cu fișierul cu litere din directorul de testare.

găsiți fișierul ./test -name *

producție

./test/file22.txt
./test/file30.doc
./test/file1.txt
./ Test / file5, doc

Căutați fișiere după extensie

Pentru a căuta fișiere cu o anumită extensie, adăugați-o la comandă.

găsi . -nume * .txt

producție

./test/subtest/subfil.txt
./test/file22.txt
./test/file1.txt
./home1/files32.txt
./home2/file22.txt
./qa/tags.txt

Găsiți fișiere și directoare după nume

Folosiți comanda de mai jos pentru a căuta fișiere și directoare care încep cu literele qa. În computerul nostru, avem fișierele qatree.txt și qa.txt, precum și un director cu numele qa.

Dacă executăm comanda;

găsi ./-nume "qa *"

Se returnează următoarea ieșire

./test/qatree.pdf
./test/qa.txt
./ Home / qa

Comanda returnează atât fișierele, cât și directoarele 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 de tip f.

Doar fișiere

găsi ./ -tipul f-nume "qa *"

producție

./test/qatree.pdf
./test/qa.txt

Doar directoare

Adăugați opțiunea tip d pentru a localiza doar directoarele.

găsiți ./ -tipul d "qa *"

producție

./ Home / qa

Comandă de constatare nesensibilă din caz

Toate căutările cu comutatorul -name sunt sensibile cu litere mari și mari și nu vor da rezultate cu majuscule. Pentru a obține toate cazurile, utilizați opțiunea -iname.

găsi ./ -nume "qa *"

producție

./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 diferite directoare, adăugați căile lor în comandă. În cazul nostru, vom verifica în testele și directoarele numerice.

găsiți ./test ./numeric -name file22.txt -type f

producție

./test/file22.txt
/root/numeric/file22.txt

Găsiți mai multe fișiere cu diferite extensii din toate directoarele

Puteți utiliza comanda find pentru a localiza mai multe fișiere care împărtășesc diferite extensii, cum ar fi * .doc, * .txt * .pdf, etc. Aceasta se poate face separat, o extensie la un moment dat sau folosind o singură comandă care include toate extensiile dorite.

găsi . -tipul f (-nume "*.txt" -o -nume "* .pdf" -o -nume "* .doc" )

producție

./test/subtest/subfil.txt
./test/qatree.pdf
./test/file22.txt
./test/qa.txt
./test/file30.doc
./books/acro.pdf
./data1/FILE22.txt
./docs/files32.txt

Găsiți 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 vă puteți aminti numele sau locația fișierului. Această comandă vă permite să găsiți toate fișierele care conțin textul dvs. țintă.

Pentru a căuta toate fișierele care conțin cuvântul hyperconvergență ”, utilizați;

find / -type f -exec grep -l -i "hyperconvergence" {};

producție

/ Root / numeric / HCI
/ Root / HCIP

Opțiunea –i permite comenzii să ignore cazurile și va găsi textul indiferent dacă este scris sau nu, adică hiperconvergență, hiperconvergență, etc..

Pentru a căuta fișierele într-un anumit director, pur și simplu adăugați-l la comandă

găsiți ./numeric -type f -exec grep -l -i "hyperconvergence" {};

producție

./ Numeric / HCI

Găsiți fișiere și directoare în funcție de dimensiune

Puteți găsi toate fișierele sau directoarele mai mici, egale sau mai mari decât o anumită dimensiune, într-un anumit interval sau goale. Utilizați formatul de dimensiune corespunzător în funcție de tipul de fișiere sau directoare pe care le căutați.

Opțiunile de mărime includ;

c – octeți

k – kilobiți

M – Megabytes

G – gigabytes

Găsiți fișiere cu o anumită dimensiune – egală cu 30 MB

Pentru a căuta găsiți toate fișierele de 30 MB

găsi / -dimensiune 30M

Găsiți fișiere mai mari decât o dimensiune specificată

găsiți-dimensiune + 2M

producție

. /Downloads/ubuntu18043.iso
./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c

Găsiți fișiere cu mai puțin de 10 MB în directorul curent

găsi . -tipul f-dimensiunea -10M

Găsiți fișiere cu dimensiuni cuprinse între 100-200MB

Când căutați fișiere într-un interval specific, cum ar fi între 100 și 200 MB

găsiți / -dimensiune + 100M-dimensiune -200M

Căutați directoare mai mari de 20kb

găsi / -tip d-dimensiune + 20k

Găsiți fișiere și directoare goale.

Fișiere

găsiți ./ -tipul f-dimensiunea 0

sau

găsi ./ -tip f -empty

Directoare

găsi ./ -tip d -empty

Găsiți fișiere după vârstă sau timp de modificare

Găsiți fișiere mai vechi de n zile

find / path / -type f -name ‘* .txt’ -mtime +8

-Mtime +8 va căuta fișiere txt mai vechi de 8 zile.

Prin data modificării

Acesta va căuta fișiere modificate în ultimele 17 ore

găsi . -mtime -17 -tip f

Căuta directoare modificate în ultimele 10 zile

găsi . -mtime -10-tip d

Găsiți fișiere bazate pe acces sau modificare

Găsiți fișiere în funcție de data sau ora accesate. Acest lucru vă permite să vedeți fișierele la care nu au fost accesate 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 de acasă.

găsi / acasă-timp +10

Fișiere accesate în urmă cu exact 10 zile

găsi / acasă-ora 10

Accesat în ultimele 10 zile

găsi / acasă-la ora -10

Găsiți fișiere modificate în ultimele n zile

De asemenea, puteți căuta fișierele din directorul / home modificate în ultimele 10 zile folosind comanda;

găsi / acasă-timp -10

Găsiți fișiere modificate într-o anumită perioadă.

De exemplu, toate fișierele modificate între 6 și 15 zile în directorul de acasă.

find / home-type tip 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 opțiunea -amin.

găsi . -amin -10 -tip f

producție

./.bash_history
./[Email protected]: ~ #

Directoare accesate în ultimele 10 minute

găsi . -amin -10-tip d

Găsiți fișiere care se potrivesc cu permisiuni specifice

Sintaxă

$ find -perm

În cazul în care modul este permisiunea care este fie numerică, cum ar fi 644, 655, 700, 777, etc, sau litere precum u = x, a = r + x, etc..

Puteți specifica modul în următoarele trei moduri diferite.

  1. Fără un prefix când doriți să găsiți fișiere cu permisiunile exacte specificate.
  2. Cu „-” pentru fișierele cu cel puțin permisiunea specificată. Aceasta returnează fișierele cu permisiunile specificate, precum și cu permisiuni suplimentare mai mari.
  3. Utilizarea „/” necesită specificarea proprietarului sau a grupului cu permisiunea fișierului.

Găsiți fișierele cu permisiunea 777

găsește -perm 777

producție

./ fișier1

Găsiți fișiere cu cel puțin 766
găsește -permă -766

producție

./ fișier2
./ fișier1

Comanda caută toate fișierele în care

  • Proprietarul fișierului are permisiuni de citire / scriere / execuție.
  • Grupul are permisiuni de citire / scriere
  • Alții au permisiunea de a citi / scrie

Ca atare, returnează două fișiere care îndeplinesc acest criteriu – file1 și file2. Fișierele nu trebuie să aibă permisiunile exacte 766 și pot avea altele suplimentare atât timp cât trebuie să aibă cel puțin specificat.

Găsiți fișiere scrise de proprietar

Vom folosi acum „/” pentru a căuta fișiere scrise fie de proprietarul lor, fie de grup sau de alții.

găsi -perm / 222
.
./ fișier2
./ file3
./ fișier1

Cele de mai sus caută fișiere care pot fi scrise de proprietarul sau grupul lor.
Aceasta returnează fișiere care pot fi scrise de oricare, dar nu neapărat de ambele. Pentru a vedea fișierele, unde ambele au permisiuni de scris, folosiți prefixul -.

găsiți -perm -220

producție

./ fișier2
./ fișier1

Găsiți fișiere deținute de un utilizator

Găsiți toate fișierele deținute de Jack

găsi / casă-user jack

producție

/ Home / jack
/home/jack/examples.desktop
/home/jack/.gnupg
/home/jack/.gnupg/private-keys-v1.d
/home/jack/ans.cgi

Găsiți fișiere specifice deținute de un utilizator

Găsiți toate fișierele text deținute de Jack

find / home -user jack -iname "*.txt"

producție

/home/jack/docs/file32.txt

Găsiți și listați fișierele și directoarele împreună cu permisiunile lor

find -name "* .conf" | ls -l

producție

în total 120
drwxr-xr-x 2 root root 4096 31 dec 13 13:19 backup2
drwxr-xr-x 2 root root 4096 4 ian 11:57 Desktop
drwxr-xr-x 2 root root 4096 31 dec 11 11:50 Documente
drwxr-xr-x 2 root root 4096 31 decembrie 12:27 Descărcări
-rw-r – r– 1 rădăcină rădăcină 0 ian 4 12:02 file22.doc
drwxr-xr-x 2 root root 4096 4 ian 12:14 file23
-rw-r – r– 1 root root 0 ian 4 12:23 file23.txt

Găsiți și acționați asupra rezultatelor

În această secțiune, vom analiza cum puteți acționa asupra fișierelor 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 pentru anumite tipuri de fișiere. În cazul nostru, vom lucra cu fișiere PHP cu permisiuni diferite, așa cum se arată mai jos.

[Email protected]: ~ / ver $ ls -la

în total 8
drwxrwxr-x 2 jack jack 4096 3 ian 14:11 .
drwxr-xr-x 8 jack jack 4096 3 ian 14:05 ..
-rwxr-xr-x 1 jack jack 0 ian 3 14:06 ans.php
-rw-rw-r– 1 jack jack 0 ian 3 14:11 base.php
-rwxr-xr-x 1 jack jack 0 ian 3 14:06 query.php
-rw-rw-r– 1 jack jack 0 ian 3 14:11 qust.php
-rwxr-xr-x 1 jack jack 0 ian 3 14:06 text.php
-rw-rw-r– 1 jack jack 0 ian 3 14:11 vary.php

Acum vom căuta toate fișierele PHP (de mai sus) și le vom înlocui permisiunile cu 755

găsi ver-nume "* .php" -tip f -exec chmod 755 {};

Comanda caută fișiere PHP în directorul ver și apoi stabilește permisiunea lor la 755 (rwxr-xr-x)

Rezultate

[Email protected]: ~ / ver $ ls -la
în total 8
drwxrwxr-x 2 jack jack 4096 3 ian 14:11 .
drwxr-xr-x 8 jack jack 4096 3 ian 14:05 ..
-rwxr-xr-x 1 jack jack 0 ian 3 14:06 ans.php
-rwxr-xr-x 1 jack jack 0 ian 3 14:11 base.php
-rwxr-xr-x 1 jack jack 0 ian 3 14:06 query.php
-rwxr-xr-x 1 jack jack 0 ian 3 14:11 qust.php
-rwxr-xr-x 1 jack jack 0 ian 3 14:06 text.php
-rwxr-xr-x 1 jack jack 0 ian 3 14:11 vary.php

Găsiți și modificați permisiunile pentru fișiere și director

Găsiți fișierele cu 644 permisiuni și schimbați-le pentru a avea 655 permisiuni

găsi . -tipul f -perm 644 -exec chmod 655 {};

De asemenea, puteți căuta directoare cu permisiuni 644 și înlocuiți-l cu 755.

găsi . -tipul d -perm 644

producție

./ docs

Dosarul docs are 644 permisiuni

drwxrwxr-x 2 jack jack 4096 3 ian 12:45 docs

Pentru a-l seta la 755, rulăm

găsi . -tipul d -perm 644 -exec chmod 755 {};

Acum putem verifica din nou pentru a vedea care este exact 755

găsi . -tipul d -perm 755

producție
.
./ docs

De sus putem vedea directoarele rădăcină și docs au 755 permisiuni.

Comanda Ls –la oferă următoarele detalii

drwxr-xr-x 2 jack jack 4096 3 ian 12:45 docs

Găsiți și copiați fișiere sau directoare

Găsiți și copiați un fișier specific într-un director

Comanda de mai jos va găsi fișierul file22.txt și îl va copia în directorul ~ / tmp / images.

find -iname file22.txt -exec cp {} ~ / tmp / images;

Găsiți și copiați un tip de fișiere într-un director

Pentru a găsi fișiere precum imagini cu extensie jpg în directorul curent și să le copiați într-o locație diferită, cum ar fi un folder de imagini, utilizați;

find -iname ‘* .jpg’ -exec cp {} ~ / tmp / images;

Aceasta va găsi și copia toate fișierele jpg în folderul ~ / tmp / images.

Găsiți și copiați un fișier în multe directoare

Găsiți și copiați o singură directoare pe mai multe.

find ~ / tmp / dir1 / ~ / tmp / dir2 / $ HOME / 3 / -maxdepth 0 -exec cp ~ / numeric / hci {};

Acesta va găsi fișierul fișier hci și îl va copia în cele trei directoare ale / tmp / dir1 / / tmp / dir2 / și $ HOME / 3 /

Găsiți și mutați fișierele într-un director diferit

Pentru a muta un fișier cunoscut dintr-un director în altul. Pentru a muta fișierul universal.php;

găsi ~ / folder / -type f -name universal.php -exec mv {} ~ / numeric /;

Căutați și mutați fișierele cu o anumită extensie într-un folder diferit

găsi ~ / numeric / -type f -name ‘* .php’ -exec mv {} ~ / folder /;

Găsiți anumite fișiere și treceți la un folder diferit

find -type f -name uni *. * -exec mv {} ~ / unifiles /;

Comanda caută toate fișierele cu nume care încep cu uni și care au orice extensie. Le mută apoi în directorul / unifiles /

Găsiți și mutați fișierele în funcție de vârstă

Găsiți și mutați fișiere mai vechi decât zilele specificate într-o locație diferită, cum ar fi arhiva.

find / path / -type f -name ‘* .pdf’ -mtime +20 -exec mv {} / backup1 /;

Acest lucru va căuta fișiere pdf mai vechi de 20 de zile și le va muta în directorul backup1.

Găsiți și ștergeți fișiere și directoare

Sintaxa pentru găsirea și eliminarea fișierelor sau directoarelor din directorul curent este

găsi . -tipul f-numele "fișier de șters" -exec rm -f {}; pentru a șterge doar fișierele sau

găsi . -tipul d-nume "-Dir la-delete" -exec rm -rf {}; pentru a șterge doar directoare

Găsiți și ștergeți numai fișiere specifice

Pentru a găsi și șterge fișierele începând cu til, utilizați;

găsi . -tipul f-numele "til *" -exec rm {};

Pentru a găsi și șterge directoarele începând cu til

găsi . -tipul d-nume "til *" -exec rm {};

Eliminați fișierele și directoarele

găsi . -Nume "til *" -exec rm -rf {};

Acest lucru va elimina atât fișierele, cât și directoarele începând cu literele til.

Ștergeți prin extensie

Mai jos, puteți localiza și șterge toate fișierele txt din directorul curent. Înlocuiți txt-ul cu o altă extensie, cum ar fi bak, pdf sau orice alta pe care doriți să o eliminați.

găsi . -tipul f-numele "*.txt" -exec rm -f {};

În cazul în care doriți ca sistemul să vă solicite confirmarea înainte de a șterge fiecare fișier, adăugați opțiunea -i ca mai jos.

găsi . -tipul f-numele "*.txt" -exec rm -i {};

producție

rm: eliminați fișierul gol regulat ‘./File22.txt’? y
rm: eliminați fișierul gol regulat ‘./file22.txt’? y
rm: eliminați fișierul gol regulat ‘./file23.txt’?

În mod implicit, -rm nu va elimina directoarele și trebuie să utilizați opțiunea –r pentru a asigura o eliminare recursivă. Acest lucru asigură ștergerea directoarelor goale și a celor care conțin fișiere. Opțiunea -f forță eliminarea și este folosită 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șierele de rezervă mai vechi de 20 de zile din directorul curent.

găsi . -tipul f-numele ‘* .bak’ -mtime +20 -exec rm {};

Aceasta va șterge toate fișierele .bak mai vechi de 20 de zile.

Găsiți și ștergeți numai directoare

Pentru a șterge un director numit dir22

găsi . -tipul d-nume dir22 -exec rm -rf {};

Asigurați-vă că corespundeți cazului cu numele directorului sau utilizați opțiunea -iname.

găsi . -tipul d -inamint Dir22 -exec rm -rf {};

Îndepărtează atât Dir22, cât și Dir22

Pentru a confirma înainte de ștergere, utilizați opțiunea -i.

găsi . -tipul d -inom Dir22 -exec rm -rf -i {};

producție
rm: eliminați directorul „./Dir22”? n
rm: eliminați directorul „./dir22”? y

În cazul nostru, am tastat n pentru directorul Dir22 care nu va fi șters și y pentru dir22 care va fi eliminat.

Găsiți și eliminați fișierele goale

Puteți utiliza oricare dintre următoarele comenzi pentru a localiza fișierele goale și a le șterge automat.

găsiți ./ -tipul f-dimensiunea 0 -exec rm -f {};

sau
găsiți ./ -tipul f-dimensiunea 0 | xargs rm -f
sau
găsiți ./ -tipul f-dimensiunea 0 – ștergeți

Găsiți și eliminați directoarele goale

Pentru a elimina directoarele goale vom folosi opțiunea d.

găsi ./ -type d -empty -exec rmdir {};

O altă alternativă este să utilizați ștergere în loc de a elimina.

găsi ./ -tipul d -empty -delete

Vă rugăm să rețineți că ștergerea de sistem sau a fișierelor critice din computer poate deteriora sistemul de operare sau aplicațiile sau poate duce la pierderea datelor importante.

Pentru a evita ștergeri accidentale, este mai bine 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, în cazul în care.

Ce urmeaza?

Continuați și încercați-le în mediul dvs. de laborator sau 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, verificați acest lucru curs online.

ETICHETE:

  • Linux

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me