Linuxi ja Unixi käskude kasutamine: leida

Linuxi ja Unixi käsk otsi käivitab failide otsimise kataloogihierarhias.

Leida käsu süntaks:

leida [tee ...] [väljend]

Kirjeldus

Käsiraamat dokumenteerib lehe GNU versiooni. Käsuotsing otsib kataloogidepuu, mis on juurdunud iga antud faili nime juures, hinnates antud väljendit vasakult paremale vastavalt ülimuslikkuse reeglitele (vt allpool olevat Operaatorit), kuni tulemus on teada; teisisõnu, vasakpoolne külg on vale ja toimingud, tõene või , millisel hetkel leiab järgmise pildi nime.

Esimene argument, mis algab:

väljendatakse sõnade alguseks; mis tahes argumendid enne seda on otsinguteed ja kõik argumendid pärast seda, kui ülejäänud osa on väljend. Kui teed ei ole antud, kasutatakse praegust kataloogi. Kui väljendit ei esitata, kasutatakse väljendit -printi .

Kui kõik failid on edukalt töödeldud, lahkub käsu käsk olekus 0, kui vigu ilmneb rohkem kui 0.

Väljendid

Väljend koosneb valikutest (mis mõjutavad üldist toimimist, mitte konkreetse faili töötlemist ja alati tõenevad), testid (mis tagavad tõese või vale väärtuse) ja toimingud (millel on kõrvaltoimed ja tagastavad tõese või vale väärtus), kõik on operaatorite poolt eraldatud. Väljend " ja eeldatakse, kui operaator on välja jäetud. Kui väljend ei sisalda ühtegi muud toimingut kui -prune , siis -print tehakse kõigis failides, mille puhul väljend on tõene.

Valikud

Kõik valikud tagavad alati tõese. Nad hakkavad alati toimima, mitte töödelda ainult siis, kui nende koha väljendus on saavutatud. Seetõttu on selguse huvides kõige parem paigutada sõnad alguses.

- päeva alguses Mõõda aegu ( -amin, -atme, -cmin, -ctime, -mmin ja -mtime ) täna algusest peale, mitte alates 24 tundi tagasi.
-sügavus Proovige iga kataloogi sisu enne kataloogi enda.
-järgmine Loobu sümboli lingidest. Tähendab - pole teada .
-ihaldus või --help Trüki kokkuvõte käsurea kasutamisest otsingu ja väljumise kohta.
-maxdepth [number] Lahkuda käsurea argumentide all olevate kataloogide suurima arvu arvu (mittenegatiivsete täisarvude) hulgast. Väljend -maxdepth 0 tähendab seda, et käsurea argumentide puhul kasutatakse ainult testid ja toiminguid.
-mindepth [number] Ärge rakendage ühtegi testi ega toiminguid numbritega, mis on väiksemad kui number (mittenegatiivne täisarv). Väljend -mindp 1 tähendab kõigi failide töötlemist, välja arvatud käsurea argumendid.
-maht Ärge laske katalooge teistelt failisüsteemidelt alla. -xdev-i alternatiivne nimi, mis sobib mõne teise leidmise versiooniga.
-noleaf Ärge optimeerige eeldades, et kataloogid sisaldavad 2 väiksemat alamkataloogi kui nende raskete lingide arv. *
-versioon või -versioon Leida versiooni number ja väljumiseks.
-xdev Ärge laske katalooge teistelt failisüsteemidelt alla.

* Seda võimalust on vaja failisüsteemide otsimisel, mis ei järgi Unix-i kataloogi linki, näiteks CD-ROMi või MS-DOS-failisüsteeme või AFS-i mäluseadmeid. Iga tavalise Unix-failisüsteemi igal kataloogil on vähemalt kaks kõva lingiga: selle nimi ja selle nimi . (perioodi) sissekanne. Lisaks sellele on selle alamkataloogidel (kui neid on) igaühel .. kataloog, mis on seotud selle kataloogiga.

Kui otsing otsib kataloogi, kui ta on loonud kaks väiksemat alamkataloogi kui kataloogi linkide arv, teab ta, et ülejäänud kataloogi sissekanded on mitte-kataloogid ( lehtede failid kataloogipuus). Kui tuleb uurida ainult failide nimesid, ei ole vaja neid seadistada; see annab otsingukiiruse märkimisväärse suurenemise.

Testid

Numbrilisi argumente saab määrata järgmiselt:

+ n Suurem kui n
-n Vähem kui n
n Täpselt n.
-amin n Viimati on faili kasutatud n minutit tagasi.
-Anger [faili] Viimati pääseti failile hiljuti, kui faili muudeti. -Anger mõjutab -follow ainult siis, kui -follow jõuab varem-käsurealt edasi.
-aegu n Viimati pääseti failile n * 24 tundi tagasi.
-cmin n Faili olekut on viimati muudetud n minutit tagasi.
-cnewer [faili] Faili olekut värske viimati viimasena, kui faili muudeti.
- cnewer mõjutab -follow ainult siis, kui järgmine käsk tuleb käsuga käsu- cnewer .
-ctime n Faili olekut on viimati muudetud n * 24 tundi tagasi.
-tühi Fail on tühi ja see on kas tavaline fail või kataloog.
-false Alati vale.
-fstype [tüüp] Fail on määratud tüüpi failisüsteemis. Kehtivad failisüsteemi tüübid varieeruvad Unixi erinevate versioonide seas; mõne Unixi versiooni või teise versiooni puhul on failide tüübi mittetäielik nimekiri: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Funktsionaalsete failide tüüpide nägemiseks võite kasutada% f -nimekirja -printf-i.
-gid n Faili numbrirühma ID on n .
-rühm [gname] Fail kuulub grupi gname (lubatud numbrirühma).
-nimi [muster] Nagu -nimi, kuid vaste ei ole tõstutundlik.
-nimi [muster] Sarnane -nimi , kuid vaste ei ole tõstutundlik. Näiteks mustrid * ja F ?? sobitage failinimed Foo , FOO , foo , fOo jne
-inum n Failil on inode number n .
-pit [muster] Nagu -tee , kuid mäng ei ole tõstutundlik.
-iregeks [muster] Nagu -regex, kuid vaste ei ole tõstutundlik.
-links n Failil on n linke.
-nimi [muster] Fail on sümboolne link, mille sisu vastab koondmustrile. Metasärgid ei käsitle / või . spetsiaalselt.
-mmin n Faili andmeid värskendati viimati n minutit tagasi.
mtime n Faili andmeid värskendati viimati 24 tundi tagasi.
-nimi [muster] Failinime baas (tee, kus juhtivad kataloogid on eemaldatud) sobivad shelli mustriga. Tähemärgid ( * , ? , Ja [] ) ei vasta a . baasnime alguses. Kataloogi ja selle failide ignoreerimiseks kasutage -prune ; vt näide sõidusuuna kirjelduses.
-newer [faili] Faili muudeti hiljem kui faili . Väljendi -newer mõjutab -follow ainult juhul, kui -follow tuleb enne käsurealt varasemat .
-nouser Ükski kasutaja ei vasta faili numbrilisele kasutajatunnusele.
-rühm Ükski rühm ei vasta faili numbrirühma ID-le.
-tee [muster] Failinimi vastab shelli musterile . Metasärgid ei käsitle / või . spetsiaalselt; nii näiteks leida. -path'./sr*sc prindib kataloogi nimega ./src/misc (kui see on olemas). Kogu kataloogipuu ignoreerimiseks kasutage -prune, mitte iga puu faili kontrollimist. Näiteks, et jätta kataloogi src / emacs ja kõik selle alla kuuluvad failid ja kataloogid ning printida teiste leitud failide nimesid, tehke midagi sellist: leia. -tee './src/emacs' -prune -o -print
-perm [režiim] Faili loa bittid on täpselt [režiim] (kaheksand või sümboolne). Sümboolne režiim kasutab režiimi 0 lähtepunktiks.
-perm-mood Kõik loa bittid [režiim] on failile seadistatud.
-perm + režiim Iga faili jaoks on määratud luba bitti [mode] .
-regex [muster] Failinimi vastab regulaaravaldise musterile . See on kogu tee, mitte otsing. Näiteks faili nimega ./fubar3 sobitamiseks võite kasutada regulaaravaldist . * Baar. või . * b. * 3 , kuid mitte b. * r3 .
-suurus n [bckw] Fail kasutab n ruumiühikut. Vahendid on vaikimisi 512-baidised plokid või kui b järgneb n baitidele, kui c järgneb n , kilobaitides, kui k järgneb n või 2-baidistele sõnadele, kui w järgib n-d . Suurus ei arvesta kaudseid plokke, kuid see arvutab mahajäänud failidena plokke, mida tegelikult pole eraldatud.
-tõsi Alati tõsi.
-tüüp c Fail on tüüp c :
b Blokeeri (puhverdatud) eriline
c Tähemärk (unbuffered) eriline
d Kataloogi
p Nimetatud toru (FIFO)
f Regulaarne fail
l Sümboolne link
s Pistikupesa
D uks (Solaris)
-uid n Faili numbriline kasutajatunnus on n .
-kasutatud n Viimati pääseti failile n päeva pärast selle staatust viimati muudetud.
-user uname Fail kuulub kasutaja uname (lubatud numbriline kasutajatunnus).
-tüüp c Sama kui- tüüp, kui fail pole sümboolne link. Sümbolite lingid: kui -follow ei ole antud, tõene, kui fail on link c- tüüpi failile; kui- järgnev on antud, tõene, kui c on l. Teisisõnu, sümboolsete linkide jaoks
-tüüp kontrollib faili tüüpi, mida tüüp ei kontrolli.

Toimingud

-exec käsk ;

Käivita käsk ; tõene, kui 0 staatus on tagastatud. Kõik järgnevad argumendid, mida tuleb leida, on käskluse argumendid, kuni argumendist, mis koosneb ";" on tekkinud. String {{} asendatakse praeguse faili nimega, mida töödeldakse kõikjal, kus see aset leiab käsus olevatest argumentidest, mitte ainult argumentidest, kus see on üksi, nagu mõnes leitud versioonis. Võimalik, et mõlemad need konstruktsioonid peavad olema päästetud (koos tähisega `\ ') või tsiteeritud, et kaitsta neid shelli laiendamisega. Käsk käivitatakse kataloogis.

-fl- fail

Tõsi; nagu -l, kuid kirjuta failiks nagu -fprint.

-fprint faili

Tõsi; printige faili täielik failinimi . Kui faili leidmine käivitamisel faili ei eksisteeri, luuakse see; kui see on olemas, on see kärbitud. Failinimed `` / dev / stdout '' ja `` / dev / stderr '' käideldakse spetsiaalselt; need viitavad vastavalt standardväljundi ja standardviga väljundile.

-fprint0 fail

Tõsi; nagu -print0, aga kirjutan faili nagu -fprint.

-fprintf failivorming

Tõsi; nagu -printf, kuid kirjuta failiks nagu -fprint.

-k käsk ;

Nagu -exec, küsige kasutajalt esimest (tavalises sisendis); kui vastus ei alga "y" või "Y" -ga, ärge käsku käivitage ja tagastab vale.

-print

Tõsi; printige standardväljundi täielik failinimi, millele järgneb uus rida.

-print0

Tõsi; printige standardväljundi täielik failinimi, millele järgneb nullmärk. See võimaldab värskendusi sisaldavaid failinimesid õigesti tõlgendada leitud väljundeid töödeldavate programmide abil.

-printf- vormingus

Tõsi; prindi standardväljundi formaat , tõlgendades `\ 'põgeneda ja`%' direktiive. Väljade laiuseid ja täpsust saab määratleda nagu `printf 'C funktsiooniga. Erinevalt printist, -printf ei lisata stringi lõpus uut rida. Väljapääsud ja direktiivid on järgmised:

\ a

Alarmi kell.

\ b

Backspace.

\ c

Lõpetage printimist sellest vormingust kohe ja loputage väljund.

\ f

Vormi sööt.

\ n

Uus rida.

\ r

Vedaja tagasitulek.

\ t

Horisontaalne sakk.

\ v

Vertikaalne sakk.

\\

Sõnaselge tagasitäik (`\ ').

\ NNN

Tähemärk, mille ASCII-kood on NNN (kaheksand).

Tähemärgi `\ ', millele järgneb ükskõik milline teine ​​täht, loetakse tavaliseks, nii et need mõlemad on trükitud.

%%

Tähisprotsent.

% a

Faili viimane juurdepääsuvõimalus funktsioonis C `ctime tagatud vormingus.

% A k

Faili viimane juurdepääsuvõimalus on määratud k-ga määratud vormingus, mis on kas `@ 'või funktsiooni C strftime jaoks mõeldud direktiiv. K võimalikud väärtused on loetletud allpool; mõned süsteemid võivad olla kättesaadavad kõigis süsteemides süsteemide `strftime 'erinevuste tõttu.

@

sekundit alates 1. jaanuarist 1970, 00:00 GMT.

Ajaväljad:

H

tund (00..23)

Ma

tund (01..12)

k

tund (0..23)

l

tund (1..12)

M

minut (00..59)

p

locale AM ​​või PM

r

aeg, 12 tundi (hh: mm: ss [AP] M)

S

teine ​​(00..61)

T

aeg, 24 tundi (hh: mm: ss)

X

kohaliku aja esitus (H: M: S)

Z

ajavöönd (nt EDT) või mitte, kui ajavööndit pole võimalik kindlaks määrata

Kuupäevade väljad:

a

lokaadi lühendatud tööpäeva nimi (Sun..Sat)

A.

Lokaadi täieliku tööpäeva nimi, muutuv pikkus (pühapäev ... täna)

b

locale'i lühendatud kuu nimi (Jan..Dec)

B

lokaalse täishinna nimi, muutuv pikkus (jaanuar ... detsember)

c

locale'i kuupäev ja kellaaeg (laupäev november 04 12:02:33 EST 1989)

d

kuu päev (01..31)

D

kuupäev (mm / dd / aa)

h

sama mis b

j

aastapäev (001..366)

m

kuu (01..12)

U

pühapäeva nädala number esimesel nädalapäeval (00..53)

w

nädala päev (0..6)

W

esmaspäeva nädalane number esmaspäevana (00..53)

x

kohaliku kuupäeva esitus (mm / dd / aa)

y

kaks viimast numbrit aastas (00..99)

Y

aasta (1970 ...)

% b

Faili suurus 512-baidistes plokkides (ümardatakse üles).

% c

Faili viimane oleku muutuse aeg funktsiooni C `ctime poolt tagastatud vormingus.

% C k

Faili viimane oleku muutuse aeg on määratud k-ga määratud vormingus, mis on sama kui% A puhul.

% d

Faili sügavus kataloogipuu; 0 tähendab, et fail on käsurea argument.

% f

Faili nimi eemaldatakse juhtivate kataloogidega (ainult viimane element).

% F

Failisüsteemi tüüp fail on sisse lülitatud; seda väärtust saab kasutada -fstype.

% g

Faili rühma nimi või numbrirühma ID, kui grupil pole nime.

% G

Faili numbrirühma ID.

% h

Faili nime juhtivad kataloogid (kõik, va viimane element).

% H

Käsurea argument, mille alusel fail leiti.

% i

Faili inode number (kümnendkohtades).

% k

Faili suurus 1K plokkides (ümardatakse üles).

% l

Sümboolse lingi objekt (tühi string, kui fail ei ole sümboolne link).

% m

Faili loa bittid (oktoobris).

% n

Tugeva lingi failide arv.

% p

Faili nimi.

% P

Faili nimi koos käsurea argumendi nimega, mille alusel see eemaldati.

% s

Faili suurus baitides.

% t

Faili viimane muudatusaeg C `ctime'i poolt tagatud vormingus.

% T k

Faili viimase muudatuse aeg on määratud k-ga määratud vormingus, mis on sama kui% A puhul.

% u

Faili kasutajanimi või numbriline kasutajatunnus, kui kasutajal pole nime.

% U

Faili numbriline kasutajatunnus.

Tähemärgi `% ', millele järgneb ükskõik milline teine ​​täht, visatakse ära (kuid teine ​​täht on trükitud).

-kuivatatud ploom

Kui -depth ei anta, tõsi; ära lase käimasolevat kataloogi.
Kui -depth on antud, vale; puudub mõju.

-l

Tõsi; nimekirja praegust faili standardväljundi `ls-dils 'vormingus. Blokeeringu arv on 1K plokk, välja arvatud juhul, kui on määratud keskkonnamuutuja POSIXLY_CORRECT, millisel juhul kasutatakse 512-baidist plokki.

Ettevõtjad

Nimekirjas järjekorras väheneb ülimuslikkus:

( expr )

Jõu ülimuslikkus

! expr

Tõsi, kui expr on vale.

ei ole expr

Sama nagu ! expr .

expr1 expr2

Ja (vaikimisi); expr2 ei hinnata, kui expr1 on vale.

expr1 -a expr2

Sama mis expr1 expr2 .

expr1- ja expr2

Sama mis expr1 expr2 .

expr1 -o expr2

Or; expr2 ei hinnata, kui expr1 on tõene.

expr1 või expr2

Sama mis expr1 -o expr2 .

expr1 , expr2

Nimekiri; nii expr1 kui expr2 hinnatakse alati. Expr1 väärtus visatakse ära; loendi väärtus on expr2 väärtus.

Näited

find / home-user joe

Leidke kõik failid kataloogi / kodu all, mille omanik on kasutaja joe.

find / usr -nimi * stat

Leidke kõik failid kataloogi / usr, mis lõpeb ".stat" -ga.

lei / var / spool-mtime +60

Leidke kõik failid kataloogi / var / spool, mida muudeti rohkem kui 60 päeva tagasi.

find / tmp -nimi core-type f-print | xargs / bin / rm -f

Otsi faile nimega tuum kataloogi / tmp all ja neid kustutada. Pidage meeles, et see toimib valesti, kui on olemas mõni uue nimega failide nimed, üksik- või topeltjutumärgid või tühikud.

find / tmp -nimi core-tüüpi f-print0 | xargs -0 / bin / rm -f

Otsi faile nimega core kataloogis / tmp ja neid kustutada ning töötlema failinimesid nii, et faili- või katalooginimed, mis sisaldavad üksik- või kahekordsi jutumärke, tühikuid või värviruume, oleksid õigesti käsitsetud. Nimi- test tuleb enne tüübi testi tegemist, et vältida igas failis kõne stat (2) .

leia. -tüüp f -exec fail "{} '\;

Käivitab faili igas failis praeguse kataloogi all või selle all. Pange tähele, et traksid on ümbritsetud ühe tsitaadimärgiga, et kaitsta neid tõlgendamisel kui shelli kirjavahemärke. Semikoolonit kaitstakse samamoodi ka tagaklaasi, kuigi ";" oleks võinud ka sel juhul kasutada.

lei / \ (-perm -4000 -fprintf /root/suid.txt '% # m% u% p \ n' \), \\ (-size + 100M -fprintf /root/big.txt '% -10s% p \ n '\)

Liigutage failisüsteemi üks kord, loetledes setuid failid ja kataloogid /root/suid.txt ja suured failid /root/big.txt .

Leia $ HOME -mtime 0

Otsige oma kodukataloogi faile, mida on muudetud viimase 24 tunni jooksul. See käsu töötab sellisel viisil, kuna iga faili viimase modifitseerimise aja jaguneb 24 tunni võrra ja ülejäänud osa loobutakse. See tähendab, et sobivad -mtime

0 , peab fail varem muutuma vähem kui 24 tundi tagasi.

leia. -perm 664

Otsige faile, mis on omaniku ja rühma jaoks loetud ja kirjutanud õigusi, kuid mida teised kasutajad saavad lugeda, kuid mitte kirjutada. Failid, mis vastavad nendele kriteeriumidele, kuid millel on muud lubatud bitid (näiteks kui keegi saab faili täita), ei sobi kokku.

leia. -perm -664

Otsige faile, millel on nende omaniku ja rühma lugemis- ja kirjutusloa ning mida teised kasutajad saavad seda lugeda, arvestamata täiendavate litsibitide olemasolu (näiteks käivitatavat bitti). See sobib näiteks failiga, mille režiim on 0777.

leia. -perm / 222

Otsige faile, mille on kirjutanud keegi (nende omanik, nende grupp või keegi teine).

leia. -perm / 220 leida. -perm / u + w, g + w leida. -perm / u = w, g = w

Kõik kolm neist käsku teevad sama asja, kuid esimene kasutab faili režiimi kaheksand kujutist ning ülejäänud kaks kasutavad sümbolilist vormi. Need käsklused otsivad faile, mida saab kirjutada kas nende omanik või nende grupp. Failid ei pea olema kirjutatav nii sobiva omaniku kui ka grupi poolt; kas teevad.

leia. -perm -220 leida. -perm -g + w, u + w

Mõlemad käskud teevad sama asja; otsige faile, mis on kirjutatavad nii nende omaniku kui ka nende rühma poolt.

leia. -perm -444-perm / 222! -perm / 111 leia. -perm -a + r -perm / a + w! -perm / a + x

Need kaks käsku otsivad mõlemaid loetavate failide jaoks (-perm -444 või -perm-a + r), peavad olema vähemalt kirjutamise bittidega (-perm / 222 või -perm / a + w), kuid need ei ole käivitatavad kõigile (vastavalt! -perm / 111 ja! -perm / a + x)

Tähtis: kasutage käsuga man ( % man ), et näha, kuidas käsku kasutatakse teie konkreetsel arvutis.