40 labākie komandas Find piemēri operētājsistēmā Linux

Linux Find komanda ir spēcīgs rīks, kas ļauj sistēmas administratoriem atrast un pārvaldīt failus un direktorijus, pamatojoties uz plašu meklēšanas kritēriju klāstu. Tā var atrast direktorijus un failus pēc to nosaukuma, veida vai paplašinājuma, lieluma, atļaujām utt.

Papildus failu un direktoriju atrašanai, meklēšanas komandas apvienošana ar citām ļauj jums rīkoties ar rezultātiem. Pievienojot opciju -exec, sistēmas administratori var palaist ārējās komandas un veikt tādas darbības kā kopēšana, pārvietošana, dzēšana vai to failu atļauju maiņa, kas atbilst norādītajiem kritērijiem, piemēram, izmēram, nosaukumam utt.

Šajā rakstā mēs sāksim, izskaidrojot pamata Linux atrašanas komandas ar piemēriem. Tas parādīs, kā atrast failus un direktorijus. Pēc tam mēs parādīsim, kā izmantot opciju -exec, lai darbotos ar failiem vai direktorijiem, pamatojoties uz to lielumu, atļaujām utt.

Vispārējā meklēšanas komandas sintakse ir

find {path} {name -of-file or dir-to-search} {action-to-take}

kur,

  • ceļš norāda direktoriju.
  • faila nosaukums vai dir-to-Search : meklējamā faila vai direktorija nosaukums
  • veicamā darbība: piemēram, kopēšana, dzēšana, pārvietošana utt.

Šajā apmācībā mēs paskaidrosim, kā atrast failus un direktorijus, kas atbilst noteiktiem modeļiem. Mēs arī redzēsim, kā veikt darbības ar failiem vai direktorijiem, kurus atrod komanda find. Rokasgrāmata ir balstīta uz Ubuntu, bet ir piemērojama lielākajai daļai Linux izplatījumu un versiju.

Turinys

Atrodiet failus un direktorijus

Atrodiet noteiktus failus pēc nosaukuma vai paplašinājuma

Lai meklētu noteiktu failu, palaidiet šo komandu no saknes (/). Komanda satur precīzu faila nosaukumu, kuru meklējat.

find . -name file22.txt

Izvade

./test/file22.txt
./sales/file22.txt

Lūdzu, ņemiet vērā, ka rezultātos ir iekļauts ceļš. Tas ir svarīgi, ja nezināt direktoriju, kurā atrodas fails, vai ja tas atrodas vairākās vietās.

Varat arī meklēt failu citā direktorijā, atrodoties pašreizējā atrašanās vietā. Šajā gadījumā jums ir jānorāda ceļš uz direktoriju, kurā vēlaties meklēt.

find ./test -name file22.txt

Meklē konkrētus failus citā direktorijā

Mūsu gadījumā mēs testa direktorijā meklēsim visus, kas sākas ar burtu failu.

find ./test -name file*

Izvade

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

Meklēt failus pēc paplašinājuma

Lai atrastu failu Linux ar noteiktu paplašinājumu, pievienojiet to komandai.

find . -name *.txt

Izvade

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

Atrodiet failus un direktorijus pēc nosaukuma

Izmantojiet tālāk norādīto komandu, lai meklētu failus un direktorijus, kas sākas ar burtiem qa. Mūsu datorā ir faili qatree.txt un qa.txt, kā arī direktorijs ar nosaukumu qa.

Ja izpildām komandu;

find ./ -name "qa*"

Tas atgriež šādu izvadi

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

Komanda atgriež gan failus, gan direktorijus, kas atbilst meklēšanas kritērijiem. Lai atrastu tikai failus vai direktorijus, tas jānorāda komandā.

  11 rīki, lai pārbaudītu Linux servera drošības trūkumus un ļaunprātīgu programmatūru

Atrodiet tikai failus vai direktorijus

Tikai failiem izmantojiet f tipa slēdzi.

Tikai faili

find ./ -type f -name "qa*"

Izvade

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

Tikai katalogi

Pievienojiet d tipa opciju, lai atrastu tikai direktorijus.

find ./ -type d -name "qa*"

Izvade

./home/qa

Atrast komanda nav reģistrjutīga

Visi meklējumi ar slēdzi -name ir reģistrjutīgi un nedos rezultātus ar lielajiem burtiem. Lai iegūtu visus gadījumus, izmantojiet opciju -name.

find ./ -iname "qa*"

Izvade

./test/qatree.pdf
./test/qa.txt
./test/QAtest.txt
./home/qa

Meklējiet failu no vairākiem direktorijiem

Lai atrastu failus dažādos direktorijos, komandā pievienojiet to ceļus. Mūsu gadījumā mēs pārbaudīsim testa un ciparu direktorijus.

find ./test ./numeric -name file22.txt -type f

Izvade

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

Atrodiet vairākus failus ar dažādiem paplašinājumiem no visiem direktorijiem

Varat izmantot komandu find, lai atrastu vairākus failus, kuriem ir dažādi paplašinājumi, piemēram, *.doc, *.txt *.pdf utt. To var izdarīt atsevišķi, pa vienam paplašinājumam vai izmantojot tikai vienu komandu, kas ietver visus vēlamos paplašinājumus.

atrast. -type f ( -name “*.txt” -o -name “*.pdf” -o -name “*.doc”)

izvade

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

Atrodiet failus, kas satur noteiktu tekstu

Dažreiz jūs vēlaties piekļūt failam, kurā ir noteikts teksts, bet nevarat atcerēties tā faila nosaukumu vai atrašanās vietu. Šī komanda ļauj atrast visus failus, kas satur jūsu mērķa tekstu.

Lai meklētu visus failus, kas satur vārdu hiperkonverģence”, izmantojiet;

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

Izvade

/root/numeric/hci
/root/HCIP

Opcija –i ļauj komandai ignorēt gadījumus un atrast tekstu neatkarīgi no tā, vai tas ir rakstīts ar lielo burtu vai bez tā, piemēram, hiperkonverģence, hiperkonverģence utt.

Lai meklētu failus noteiktā direktorijā, vienkārši pievienojiet tos komandai

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

Izvade

./numeric/hci

Izpētiet citus grep komandu piemērus.

Atrodiet failus un direktorijus, pamatojoties uz lielumu

Jūs varat atrast visus failus vai direktorijus, kas ir mazāki, vienādi vai lielāki par noteiktu lielumu, noteiktā diapazonā vai tukši. Izmantojiet atbilstošā izmēra formātu atkarībā no meklējamo failu vai direktoriju veida.

Izmēru opcijas ietver;

c – baiti

k – kilobaiti

M – megabaiti

G – gigabaiti

Atrodiet noteikta izmēra failus – 30 MB

Lai meklētu, atrodiet visus 30 MB failus

find / -size 30M

Atrodiet failus, kas ir lielāki par norādīto izmēru

find -size +2M

Izvade

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

Pašreizējā direktorijā atrodiet failus, kas ir mazāki par 10 MB

find . -type f -size -10M

Atrodiet failus, kuru izmērs ir no 100 līdz 200 MB

Ja meklējat failus noteiktā diapazonā, piemēram, no 100 līdz 200 MB

find / -size +100M -size -200M

Meklējiet direktorijus, kas lielāki par 20 kb

atrast / -tipa d -izmērs +20k

Atrodiet tukšus failus un direktorijus.

Faili

atrast ./ -tipa f -izmēru 0

vai

find ./ -type f –empty

Katalogi

find ./ -type d –empty

Atrodiet failus pēc vecuma vai modifikācijas laika

Atrodiet failus, kas vecāki par n dienām

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

-mtime +8 meklēs txt failus, kas ir vecāki par 8 dienām.

Pēc modifikācijas datuma

Tiks meklēti faili, kas mainīti pēdējo 17 stundu laikā

find . -mtime -17 -type f 

Meklē direktorijus, kas mainīti pēdējo 10 dienu laikā

find . -mtime -10 -type d 

Atrodiet failus, pamatojoties uz piekļuvi vai modifikācijām

Atrodiet failus, pamatojoties uz piekļuves datumu vai laiku. Tas ļauj skatīt failus, kuriem ir vai nav piekļūts noteiktā laika posmā.

Lai mājas direktorijā skatītu failus, kuriem pēdējo 10 dienu laikā nav piekļūts.

find /home -atime +10

Failiem piekļūts tieši pirms 10 dienām

find /home -atime 10

Piekļuve pēdējo 10 dienu laikā

find /home -atime -10

Atrodiet failus, kas mainīti pēdējo n dienu laikā

Varat arī meklēt pēdējo 10 dienu laikā mainītos failus /home direktorijā, izmantojot komandu;

find /home -mtime -10 

Atrodiet failus, kas mainīti noteiktā laika posmā.

Piemēram, visi faili, kas mainīti pirms 6 līdz 15 dienām mājas direktorijā.

find /home -type f -mtime +6 -mtime -15

Faili un direktoriji, kuriem piekļūts pēdējo 10 minūšu laikā

Lai atrastu failus, kuriem piekļūts pēdējo 10 minūšu laikā, izmantojiet opciju -amin.

find . -amin -10 -type f

Izvade

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

Katalogi, kuriem piekļūts pēdējo 10 minūšu laikā

find . -amin -10 -type d

Atrodiet failus, kas atbilst noteiktām atļaujām

Sintakse

$ find -perm mode

Kur režīms ir atļauja, kas ir vai nu ciparu, piemēram, 644, 655, 700, 777 utt., vai burti, piemēram, u=x, a=r+x utt.

Varat norādīt režīmu trīs dažādos veidos.

  Kā piekļūt mega failiem operētājsistēmā Linux
  • Bez prefiksa, ja vēlaties atrast failus ar precīzām norādītajām atļaujām.
  • Ar “-” failiem ar vismaz norādīto atļauju. Tas atgriež failus ar norādītajām, kā arī papildu augstākām atļaujām.
  • Lai izmantotu “/”, ir jānorāda īpašnieks vai grupa ar faila atļauju.
  • Atrodiet failus ar atļauju 777

    find -perm 777

    Izvade

    ./file1

    Atrodiet failus ar vismaz 766
    atrast -perm -766

    Izvade

    ./file2
    ./file1

    Komanda meklē visus failus, kuros

    • Faila īpašniekam ir lasīšanas/rakstīšanas/izpildīšanas atļaujas.
    • Grupai ir lasīšanas/rakstīšanas atļaujas
    • Citiem ir lasīšanas/rakstīšanas atļauja

    Tādējādi tas atgriež divus failus, kas atbilst šim kritērijam – fails1 un fails2. Failiem nav jābūt precīzām 766 atļaujām, un tiem var būt papildu atļaujas, taču tām ir jābūt vismaz norādītajām.

    Atrodiet failus, ko var ierakstīt īpašnieks

    Tagad mēs izmantosim simbolu “/”, lai meklētu failus, ko var ierakstīt to īpašnieks, grupa vai citi.

    find -perm /222
    .
    ./file2
    ./file3
    ./file1

    Iepriekš ir meklēti faili, kurus var rakstīt to īpašnieks vai grupa.
    Tas atgriež failus, kurus var rakstīt, bet ne obligāti abi. Lai skatītu failus, kuriem abiem ir rakstīšanas atļaujas, izmantojiet prefiksu –.

    find -perm -220

    Izvade

    ./file2
    ./file1

    Atrodiet lietotājam piederošos failus

    Atrodiet visus Džekam piederošos failus

    find /home -user jack

    Izvade

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

    Atrodiet konkrētus failus, kas pieder lietotājam

    Atrodiet visus Džekam piederošos teksta failus

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

    Izvade

    /home/jack/docs/file32.txt

    Atrodiet un uzskaitiet failus un direktorijus kopā ar to atļaujām

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

    Izvade

    total 120
    drwxr-xr-x 2 root root 4096 Dec 31 13:19 backup2
    drwxr-xr-x 2 root root 4096 Jan 4 11:57 Desktop
    drwxr-xr-x 2 root root 4096 Dec 31 11:50 Documents
    drwxr-xr-x 2 root root 4096 Dec 31 12:27 Downloads
    -rw-r--r-- 1 root root 0 Jan 4 12:02 file22.doc
    drwxr-xr-x 2 root root 4096 Jan 4 12:14 file23
    -rw-r--r-- 1 root root 0 Jan 4 12:23 file23.txt

    Atrodiet rezultātus un rīkojieties atbilstoši tiem

    Šajā sadaļā mēs apskatīsim, kā varat rīkoties ar failiem, kas atbilst meklēšanas komandā norādītajam modelim.

    Atrodiet failus un mainiet atļaujas

    Atrodiet un mainiet noteiktu failu tipu atļaujas. Mūsu gadījumā mēs strādāsim ar PHP failiem ar dažādām atļaujām, kā parādīts zemāk.

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

    Tagad mēs meklēsim visus PHP failus (iepriekš) un aizstāsim to atļaujas ar 755

    find ver -name "*.php" -type f -exec chmod 755 {} ;

    Komanda meklē PHP failus ver direktorijā un pēc tam iestata to atļauju uz 755 (rwxr-xr-x)

    Rezultāti

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

    Atrodiet un mainiet failu un direktoriju atļaujas

    Atrodiet failus ar 644 atļaujām un mainiet tos uz 655 atļaujām

    find . -type f -perm 644 -exec chmod 655 {} ;

    Varat arī meklēt direktorijus ar 644 atļaujām un aizstāt to ar 755.

    find . -type d -perm 644

    Izvade

    ./docs   

    Dokumentu mapei ir 644 atļaujas

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

    Lai iestatītu to uz 755, mēs palaižam

    find . -type d -perm 644 -exec chmod 755 {} ;

    Tagad mēs varam vēlreiz pārbaudīt, kas tieši ir 755

    find . -type d -perm 755

    Izvade
    .
    ./docs

    No augšas mēs varam redzēt, ka saknes un dokumentu direktorijiem ir 755 atļaujas.

    Komanda Ls –la sniedz šādu informāciju

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

    Atrodiet un kopējiet failus vai direktorijus

    Atrodiet un kopējiet konkrētu failu direktorijā

    Tālāk sniegtā komanda atradīs failu file22.txt un nokopēs to direktorijā ~/tmp/images.

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

    Atrodiet un kopējiet viena veida failus direktorijā

    Lai pašreizējā direktorijā atrastu failus, piemēram, attēlus ar paplašinājumu jpg un kopētu tos uz citu vietu, piemēram, attēlu mapi, izmantojiet;

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

    Tādējādi visi jpg faili tiks atrasti un kopēti mapē ~/tmp/images.

    Atrodiet un kopējiet vienu failu daudzos direktorijos

    Atrodiet un kopējiet vienu direktoriju vairākos direktorijos.

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

    Tas atradīs hci failu un kopēs to trīs direktorijās /tmp/dir1/ /tmp/dir2/ un $HOME/3/

      Kā nosūtīt ziņojumus, izmantojot Bitcoin Blockchain operētājsistēmā Linux, izmantojot Bitmessage

    Atrodiet un pārvietojiet failus uz citu direktoriju

    Lai pārvietotu zināmu failu no direktorija uz citu. Lai pārvietotu universal.php failu;

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

    Meklējiet un pārvietojiet failus ar noteiktu paplašinājumu uz citu mapi

    find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/ ;

    Atrodiet noteiktus failus un pārvietojiet uz noteiktu citu mapi

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

    Komanda meklē visus failus, kuru nosaukumi sākas ar uni un kuriem ir jebkurš paplašinājums. Pēc tam tas pārvieto tos uz direktoriju /unifiles/

    Atrodiet un pārvietojiet failus atkarībā no vecuma

    Atrodiet un pārvietojiet failus, kas ir vecāki par norādītajām dienām, uz citu vietu, piemēram, arhīvu.

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

    Tas meklēs PDF failus, kas ir vecāki par 20 dienām, un pārvietos tos uz dublējuma 1 direktoriju.

    Atrodiet un dzēsiet failus un direktorijus

    Sintakse failu vai direktoriju atrašanai un noņemšanai pašreizējā direktorijā ir

    atrast. -type f -name „fails, kas jādzēš” -exec rm -f {}; lai dzēstu tikai failus vai

    atrast. -type d -name „dir-to-delete” -exec rm -rf {}; lai dzēstu tikai direktorijus

    Atrodiet un dzēsiet tikai noteiktus failus

    Lai atrastu un dzēstu failus, kas sākas ar til, izmantojiet;

    find . -type f -name "til*" -exec rm {} ; 

    Lai atrastu un dzēstu direktorijus, kas sākas ar til

    find . -type d -name "til*" -exec rm {} ;

    Noņemiet gan failus, gan direktorijus

    find . -name "til*" -exec rm -rf {} ; 

    Tas noņems gan failus, gan direktorijus, kas sākas ar burtiem til.

    Dzēst pēc paplašinājuma

    Tālāk ir norādīts, kā jūs varat atrast un dzēst visus txt failus pašreizējā direktorijā. Aizstājiet txt ar citu paplašinājumu, piemēram, bak, pdf vai jebkuru citu paplašinājumu, kuru vēlaties noņemt.

    find . -type f -name "*.txt" -exec rm -f {} ;

    Ja vēlaties, lai sistēma pirms katra faila dzēšanas aicinātu jūs apstiprināt, pievienojiet opciju -i, kā norādīts tālāk.

    find . -type f -name "*.txt" -exec rm -i {} ;

    Izvade

    rm: remove regular empty file './File22.txt'? y
    rm: remove regular empty file './file22.txt'? y
    rm: remove regular empty file './file23.txt'?

    Pēc noklusējuma -rm nenoņems direktorijus, un jums ir jāizmanto opcija -r, lai nodrošinātu rekursīvu noņemšanu. Tas nodrošina tukšu direktoriju un to direktoriju dzēšanu, kuros ir faili. Opcija -f liek noņemt un tiek izmantota gan failiem, gan direktorijiem.

    Atrodiet un izdzēsiet failus, kas vecāki par n dienām

    Atrodiet un izdzēsiet pašreizējā direktorijā dublējuma failus, kas ir vecāki par 20 dienām.

    find . -type f -name '*.bak' -mtime +20 -exec rm {} ;

    Tādējādi tiks izdzēsti visi .bak faili, kas vecāki par 20 dienām.

    Atrodiet un dzēsiet tikai direktorijus

    Lai izdzēstu direktoriju ar nosaukumu dir22

    find . -type d -name dir22 -exec rm -rf {} ;

    Pārliecinieties, vai atbilstat direktorija nosaukuma reģistram vai izmantojiet opciju -iname.

    find . -type d -iname Dir22 -exec rm -rf {} ;

    Noņem gan Dir22, gan dir22

    Lai apstiprinātu pirms dzēšanas, izmantojiet opciju -i.

    find . -type d -iname Dir22 -exec rm -rf -i {} ;

    Izvade
    rm: noņemt direktoriju ‘./Dir22’? n
    rm: vai noņemt direktoriju ‘./dir22’? y

    Mūsu gadījumā mēs ierakstījām n direktorijam Dir22, kas netiks dzēsts, un y dir22, kas tagad tiks noņemts.

    Atrodiet un noņemiet tukšus failus

    Varat izmantot jebkuru no šīm komandām, lai atrastu tukšus failus un tos automātiski izdzēstu.

    find ./ -type f -size 0 -exec rm -f {} ;

    vai
    atrast ./ -tipa f -izmērs 0 | xargs rm -f
    vai
    atrast ./ -tipa f -izmērs 0 -dzēst

    Atrodiet un noņemiet tukšos direktorijus

    Lai noņemtu tukšus direktorijus, mēs izmantosim opciju d.

    find ./ -type d -empty -exec rmdir {} ;

    Vēl viena alternatīva ir dzēšana, nevis noņemšana.

    find ./ -type d -empty -delete

    Lūdzu, ņemiet vērā, ka sistēmas vai kritisko failu dzēšana no datora var sabojāt operētājsistēmu vai lietojumprogrammas vai izraisīt svarīgu datu zudumu.

    Lai izvairītos no nejaušas dzēšanas, vislabāk ir izmantot lietotāja kontu, kas nav saknes lietotājs. Tāpat pārliecinieties, vai dzēšat pareizos failus, kas nav noderīgi, un vai katram gadījumam ir visu datu failu dublējums.

    Ko tālāk?

    Turpiniet un izmēģiniet iepriekš minētās Linux atrašanas komandas savā laboratorijā vai NON PRODUCTION vidē. Skatiet, vai varat to izmantot, lai automatizētu failu sistēmas tīrīšanu, izmantojot Crontab. Un, lai apgūtu Linux, pārbaudiet šo tiešsaistes kurss.