Naudojant Linux ir Unix komandą: rasti

" Linux" ir " Unix" komandų paieška atlieka failų paiešką katalogo hierarchijoje.

Rasti komandą sintaksė:

rasti [kelias ...] [išraiška]

apibūdinimas

Šiame vadovo puslapyje dokumentuojama GNU versijos paieška . Komanda " find" ieško katalogo medžio, įsišaknijančio kiekvieno konkretaus failo pavadinime, įvertinant nurodytą išraišką iš kairės į dešinę pagal pirmumo taisykles (žr. Skyrių Operatoriai žemiau), kol rezultatas bus žinomas; kitais žodžiais tariant, kairė pusė yra klaidinga ir operacijoms, tiesa arba , kuria taške ieškoma, pereina prie kito failo pavadinimo.

Pirmasis argumentas, prasidedantis:

yra laikomas išraiškos pradžia; bet kokie argumentai prieš tai yra paieškos kelias ir visi argumentai po to, kai yra likusi frazė. Jei nėra kelio, naudojamas dabartinis katalogas. Jei nėra išraiškos, naudojama frazė -print .

Rasti komandą išeina su statusu 0, jei visi failai yra sėkmingai apdoroti, didesnis nei 0, jei atsiranda klaidų.

Išraiškos

Sąvoka susideda iš pasirinkčių (kurios turi įtakos bendrai veiklai, o ne konkretaus failo apdorojimui ir visada grįžta teisingai), bandymai (kurie duoda tikrąją ar klaidingą reikšmę) ir veiksmai (kurie turi šalutinį poveikį ir grąžina tikrą arba klaidinga vertė), visi yra atskirti operatoriai. Sąvoka ir daroma prielaida, kai operatorius yra praleistas. Jei išraiška nėra kitų veiksmų, išskyrus -prunę , tada -print atliekama visose bylose, kurioms išraiška yra teisinga.

Galimybės

Visos parinktys visada grįžta teisingai. Jie visada įsigalioja, o ne tvarkomi tik tada, kai pasiekiama jų vieta išraiškoje. Todėl, siekiant aiškumo, geriausia juos pateikti žodžio pradžioje.

-dienio pradžia Matuokite laiką (už -amin, -atime, -cmin, -ctime, -mmin ir -mtime ) nuo dienos pradžios, o ne nuo prieš 24 valandų.
-depth Proceso kiekvieno katalogo turinys prieš patį katalogą.
- toliau Pašalinti simbolines nuorodas. Prisideda -Noleaf .
-pagalba arba -help Spausdinkite komandų eilutės naudojimo ir ieškos išvesties santrauką.
-maxdepth [skaičius] Žemyn komandų eilutės argumentų nusileiskite daugelyje lygių (neigiamas sveikasis skaičius). Sąvoka -maxdepth 0 reiškia, kad komandų eilutės argumentams taikyti tik testai ir veiksmai.
-mindeft [number] Nenaudokite jokių bandymų ar veiksmų lygiais, mažesniais nei skaičius (neigiamas sveikasis skaičius). Sąvoka -indikacija 1 reiškia, kad reikia apdoroti visus failus, išskyrus komandinės eilutės argumentus.
-mount Neapleiskite katalogų kitose failų sistemose. Alternatyva- xdev vardas, suderinamumas su kai kuriomis kitomis paieškos versijomis.
-noleafas Negalima optimizuoti, darant prielaidą, kad kataloguose yra 2 mažiau katalogučių nei jų kietųjų nuorodų skaičius. *
-versija arba -versija Spausdinti paieškos versijos numerį ir išeiti.
-xdev Neapleiskite katalogų kitose failų sistemose.

* Ši parinktis reikalinga, kai ieškote failų sistemose, kurios nesilaiko Unix katalogo nuorodų konvencijos, pvz., Kompaktinių diskų ar MS-DOS failų sistemų ar AFS apimties montavimo taškų. Kiekvienoje įprastos Unix failų sistemos aplanke yra bent 2 kietosios nuorodos: jo pavadinimas ir jo vardas . (laikotarpio) įrašas. Be to, jo pakatalogius (jei yra) kiekvienoje turi .. įrašą, susietą su tuo aplanku.

Kai " find " tiria katalogą, kai jis sukūrė du mažiau pakatalogių nei katalogo nuorodų skaičius, jis žino, kad likę įrašai kataloge yra ne katalogai ( lapų failai katalogo medyje). Jei reikia išnagrinėti tik failų pavadinimus, jų nereikia statuoti; tai labai padidina paieškos greitį.

Testai

Skaitiniai argumentai gali būti nurodyti kaip:

+ n Daugiau negu n.
-n Mažiau nei n.
n Tiksliai n.
-amin n Failas paskutinį kartą pasiektas n minučių.
-newer [failas] Failas paskutinį kartą buvo pasiektas neseniai, kai failas buvo pakeistas. -newer paveikia -follow tik tada, jei -follow ateina anksčiau - pirmiau komandų eilutėje.
-atme n Failas paskutinį kartą pasiektas n * prieš 24 val.
-cmin n Failo būsena paskutinį kartą buvo pakeista n minučių.
-cnewer [failas] Failo būsena paskutinį kartą buvo pakeista neseniai, kai failas buvo pakeistas.
- cnewer paveikė -follow tik tada, jei -follow ateina iki -cnewer komandų eilutėje.
-ctime n Failo būsena paskutinį kartą buvo pakeista n * prieš 24 val.
-tuščia Failas yra tuščias ir yra įprastas failas arba aplankas.
- klaidinga Visada klaidinga
-fstype [tipas] Failas yra nurodyto tipo failų sistemoje. Galiojančios failų sistemos tipai skiriasi įvairiose Unix versijose; Nebaigtas sąrašas failų sistemų tipų, kurie yra priimami tam tikroje Unix ar kitoje versijoje, yra: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Galite naudoti -printf su% F norėdami pamatyti failų sistemų tipus.
-gid n Failo skaitmens grupės ID yra n .
-grupė [gname] Failas priklauso grupės gname (leidžiamas skaitmens grupės kodas).
-vientis [modelis] Panašiai kaip -lname, tačiau rungtynės yra nereikšmingos.
-iname [modelis] Panašiai kaip vardas, tačiau rungtynės yra nereikšmingos. Pavyzdžiui, modeliai * ir F ?? suderinti failų pavadinimus Foo , FOO , foo , fOo , ir tt
-inum n Failas turi inode numerį n .
-pita [modelis] Panašiai - kelio , tačiau rungtynės yra nereikšmingos.
-iregeksas [modelis] Panašiai kaip -regex, tačiau rungtynės yra nereikšmingos.
- nuorodos n Failas turi n nuorodų.
-lname [modelis] Failas yra simbolinė nuoroda, kurios turinys atitinka apvalkalo struktūrą. Metachartikai netinka / arba . specialiai.
-mmin n Failo duomenys paskutinį kartą buvo pakeisti prieš n minučių.
-mtime n Failo duomenys paskutinį kartą buvo pakeisti n * prieš 24 val.
-name [modelis] Failo pavadinimo bazė (kelias su pagrindiniais katalogais pašalintas) atitinka šabloną. Metafores ( * , ? , Ir [] ) neatitinka a . bazinio pavadinimo pradžioje. Norėdami ignoruoti aplanką ir jo failus, naudokite -prune ; žr. pavyzdį aprašyme -path .
-newer [failas] Failas buvo pakeistas neseniai, nei failas . Išraiška -newer priklauso nuo -follow tik tada, jei -follow ateina anksčiau, negu komandinėje eilutėje.
-nuser Niekas neatitinka failo skaitmeninio vartotojo ID.
-grupė Nė viena grupė neatitinka failo numerio grupės ID.
- kelias [modelis] Failo pavadinimas atitinka šifravimo modelio modelį . Metachartikai netinka / arba . specialiai; taip, pavyzdžiui, rasti. "path" ./sr*sc atspausdins katalogą, pavadintą ./src/misc (jei jis egzistuoja). Norėdami ignoruoti visą katalogų medį, naudokite -prune, o ne patikrinkite kiekvieną medžio failą. Pavyzdžiui, jei norite praleisti katalogą src / emacs ir visus failus bei katalogus, esančius po juo, ir spausdinti kitų failų pavadinimus, atlikite kažką panašaus: suraskite. -path "./src/emacs" -prune-o -print
-perm [režimas] Failo leidimo bitai yra tiksliai [režimas] (aštuonkampis arba simbolinis). Simbolio režimai naudoja režimą 0 kaip išvykimo tašką.
-perm-modė Visi leidimo bitai [režimas] yra nustatyti failui.
-perm + režimas Kiekvienas failo teisinis bitas [režimas] yra nustatytas.
-regex [modelis] Failo vardas atitinka įprastinės išraiškos raštą . Tai yra viso maršruto rungtynės, o ne paieška. Pavyzdžiui, jei norite susieti failą su ./fubar3, galite naudoti įprastą išraišką *. arba . * b. * 3 , bet ne b. * r3 .
dydis n [bckw] Failas naudoja n vienetų erdvę. Vienetai pagal nutylėjimą yra 512 baitų blokai, o b - n , baitai, jei c - n , kilobaitai, jei k atitinka n arba 2 baitų žodžiai, jei w atitinka n . Dydis neatsižvelgia į netiesioginius blokus, bet jis skaičiuoja blokus rečiuose failuose, kurie faktiškai nėra priskirti.
-tiesa Visada tiesa
tipas c Failas yra c tipo:
b Blokuoti (buferizuoti) specialūs
c Simbolis (nepagamintas) ypatingas
d Katalogas
p Pavadintas vamzdis (FIFO)
f Reguliarus failas
l Simbolinė nuoroda
s Lizdas
D durys (Solaris)
-uid n Failo skaitinis naudotojo ID yra n .
naudotas n Failas paskutinį kartą buvo pasiektas n dienų po paskutinio jo statuso keitimo.
-user uname Failas priklauso vartotojo uname (leidžiamas skaitmeninis vartotojo kodas).
-pagrindas c Tas pats kaip tipas, nebent šis failas yra simbolinė nuoroda. Simboliniams saitams: jei -follow nebuvo suteikta, true, jei failas yra nuoroda į failą c tipo; jei -follow buvo duotas, tiesa, jei c yra l. Kitaip tariant, simbolinėms nuorodoms,
-štype patikrina failo tipą, kurio tipas netikrina.

Veiksmai

-exec komanda ;

Vykdykite komandą ; tiesa, jei grąžinamas 0 statusas. Visi šie argumentai, kuriuos reikia rasti , laikomi argumentais komandai, kol argumentas, susidedantis iš ";" susiduriama. Styga `() 'pakeičiama dabartiniu failo pavadinimu, kuris yra apdorojamas visur, kur jis atsiranda komandoje pateiktuose argumentuose, o ne tik argumentuose, kuriuose jis yra vienas, kaip ir kai kuriose paieškos versijose. Abu šių konstrukcijų gali tekti ištrūkti (su "\") arba cituoti, kad apsaugotų juos nuo apvalkalo išsiplėtimo. Komanda paleidžiama pradiniame kataloge.

-fls failas

Tiesa; pavyzdžiui, -ls, bet rašykite į failą kaip -fprint.

-fprint failas

Tiesa; išspausdinkite visą failo vardą į failo failą . Jei rinkmena neegzistuoja, ji yra sukurta; jei jis egzistuoja, jis yra sutrumpintas. Failų pavadinimai `` / dev / stdout '' ir `` / dev / stderr '' tvarkomi specialiai; jie nurodo atitinkamai standartinę išėjimo ir standartinės klaidos išvestį.

-fprint0 failas

Tiesa; kaip -print0, bet rašykite į failą kaip -fprint.

-fprintf failo formatas

Tiesa; kaip -printf, bet rašykite į failą kaip -fprint.

-ok komanda ;

Panašiai kaip -exec, bet pirmiausia paklauskite vartotojo (įprasto įvesties); jei atsakymas neprasideda "y" arba "Y", paleiskite komandą ir grąžinkite neteisingą.

-print

Tiesa; išspausdinkite visą failo vardą į standartinę išvestinę, po kurios įrašoma nauja eilutė.

-print0

Tiesa; išspausdinkite visą failo vardą į standartinę išvestį, po to nulinis simbolis. Tai leidžia failų pavadinimus, kuriuose yra naujų eilučių, teisingai interpretuoti programas, kurios apdoroja paieškos rezultatą.

-printf formatas

Tiesa; spausdinti standartine išvestimi, interpretuojant "\" pabėgimus ir "%" direktyvas. Lauko plotį ir tikslumą galima nurodyti kaip "printf" C funkciją. Skirtingai nuo -print, -printf eilutės pabaigoje neįrašo naujos eilutės. Pabėgimai ir direktyvos yra šios:

\ a

Aliarmo varpas.

\ b

Backspace.

\ c

Nedelsdami nutraukite spausdinimą iš šio formato ir nuleiskite išėjimą.

\ f

Forma pašarų.

\ n

Nauja linija.

\ r

Vežimo grąža.

\ t

Horizontalusis skirtukas.

\ v

Vertikalus skirtukas.

\\

Garsinis grįžtamasis brūkšnys (`\ ').

\ NNN

Simbolis, kurio ASCII kodas yra NNN (aštuonis).

Simbolis `\ 'po kurio nors kito simbolio traktuojamas kaip įprastas simbolis, todėl jie abu yra atspausdinti.

%%

Grynasis procento ženklas.

% a

Failo paskutinysis prieigos laikas formatu, kurį sugrąžina funkcija C `ctime.

% A k

Failo paskutinysis prieigos laikas formatu, nurodytu k , kuris yra arba "@", arba funkcija C `strftime '. Galimos k vertės yra išvardytos žemiau; kai kurie iš jų gali būti nepasiekiami visose sistemose dėl "strftime" skirtumų tarp sistemų.

@

sekundes nuo 1970 m. sausio 1 d., 00:00 GMT.

Laiko laukai:

H

valanda (00..23)

valanda (01..12)

k

valanda (0..23)

l

valanda (1..12)

M

minutė (00..59)

p

lokalės AM arba PM

r

laikas, 12 valandų (hh: mm: ss [AP] M)

S

antra (00..61)

T

laikas, 24 valandos (hh: mm: ss)

X

lokalės laiko pateikimas (H: M: S)

Z

laiko juostą (pvz., EDT), arba nieko, jei nėra laiko zonos

Data laukai:

a

locale sutrumpintas savaitės pavadinimas (Sun..Sat)

A

Kalendoriaus visas savaitės pavadinimas, kintamasis ilgis (sekmadienis ... sekmadienis)

b

lokalės sutrumpinto mėnesio pavadinimas (Jan ..Dec)

B

kalbos pilnas mėnulio pavadinimas, kintamas ilgis (sausio ... gruodžio mėn.)

c

lokalės data ir laikas (šeštadienį, lapkričio 4 d. 12:02:33 EST 1989)

d

mėnesio diena (01..31)

D

data (mm / dd / gg)

h

toks pats kaip b

j

metų diena (001..366)

m

mėnuo (01..12)

U

savaitės metai su sekmadieniais kaip pirmoji savaitės diena (00..53)

w

savaitės diena (0..6)

W

savaitės metų skaičius pirmadienį kaip pirmąją savaitės dieną (00..53)

x

lokalės datos pateikimas (mm / dd / gg)

y

du paskutiniai metų skaitmenys (00..99)

Y

metai (1970 ...)

% b

Failo dydis 512 baitų blokuose (suapvalintas).

% c

Failo paskutinio būsenos pakeitimo laikas formatu, kurį sugrąžina C `ctime 'funkcija.

% C k

Failo paskutinis būklės keitimo laikas formatu, nurodytu k , kuris yra toks pat kaip ir% A.

% d

Failo gylis katalogo medyje; 0 reiškia, kad failas yra komandinės eilutės argumentas.

% f

Failo pavadinimas pašalintas iš bet kurių pagrindinių katalogų (tik paskutinis elementas).

% F

Failų sistemos tipas failas yra įjungtas; ši vertė gali būti naudojama -fstype.

% g

Failo grupės pavadinimas arba skaitmens grupės ID, jei grupei nėra vardo.

% G

Failo skaitmens grupės ID.

% h

Svarbiausi failo vardo katalogai (visi, išskyrus paskutinį elementą).

% H

Komandos eilutės argumentas, pagal kurį buvo rastas failas.

% i

Failo inode numeris (dešimtainis).

% k

Failo dydis 1K blokuose (suapvalintas).

% l

Simbolinės nuorodos objektas (tuščia eilutė, jei failas nėra simbolinė nuoroda).

% m

Failo leidimo bitai (octal).

% n

Kietųjų nuorodų į failą skaičius.

% p

Failo vardas.

% P

Failo vardas su komandinės eilutės argumentu, pagal kurį jis buvo pašalintas, pavadinimo.

% s

Failo dydis baitais.

% t

Failo paskutinysis modifikavimo laikas formatu, kurį sugrąžina C `ctime 'funkcija.

% T k

Failo paskutinis modifikavimo laikas formatu, nurodytu k , kuris yra toks pat kaip ir% A.

% u

Failo vartotojo vardas arba skaitmeninis naudotojo ID, jei vartotojas neturi vardo.

% U

Failo skaitinis naudotojo ID.

Charakteris "%", po kurio eina bet koks kitas simbolis, yra atmestas (o kitas simbolis yra atspausdintas).

-prunelis

Jei -depth nėra duotas, tiesa; nesikreipkite į dabartinį katalogą.
Jei -depth yra duota, klaidinga; jokio efekto.

-l

Tiesa; Įrašykite esamą failą į "ls -dils" formatą standartine išvestimi. Blokų skaičius yra 1K blokų, nebent nustatytas aplinkos kintamasis POSIXLY_CORRECT, tokiu atveju naudojami 512 baitų blokai.

Operatoriai

Nurodyta mažėjančia tvarka:

( expr )

Prievarta prieš valdžią.

! expr

Tiesa, jei expr yra klaidingas.

- ne expr

Taip pat kaip ! expr .

expr1 expr2

Ir (numanomas); expr2 nėra įvertintas, jei expr1 yra klaidingas.

expr1 -a expr2

Tas pats kaip expr1 expr2 .

expr1 ir expr2

Tas pats kaip expr1 expr2 .

expr1 -o expr2

Arba; expr2 nėra įvertintas, jei expr1 yra tiesa.

expr1 arba expr2

Tas pats kaip expr1 -o expr2 .

expr1 , expr2

Sąrašas; tiek expr1, tiek expr2 visada yra vertinami. Expr1 vertė atmetama; sąrašo vertė yra expr2 vertė.

Pavyzdžiai

rasti / home-user joe

Raskite kiekvieną failą pagal katalogą / namų, priklausantį vartotojui Joe.

rasti / usr-vardas * stat

Raskite kiekvieną failą kataloge / usr, kuris baigiasi ".stat".

rasti / var / ritė-mtime +60

Suraskite visus failus, esančius kataloge / var / spool, kuris buvo pakeistas daugiau nei prieš 60 dienų.

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

Raskite failus pavadintą šerdimi kataloge / tmp arba po ja ir ištrinkite juos. Atkreipkite dėmesį, kad tai veiks netinkamai, jei yra failų pavadinimų, kuriuose yra naujos eilutės, vienos ar dvigubos kabutės ar tarpai.

find / tmp -name core-type f-print0 | xargs -0 / bin / rm -f

Raskite failus pavadintą šerdį kataloge arba kataloge / tmp ir ištrinkite juos, apdoroję failų pavadinimus taip, kad failų ar katalogų pavadinimai, kuriuose yra viengubos arba dvigubos kabutės, tarpai ar nauji eilutės, būtų tinkamai tvarkomi. Bandymo vardas prasideda prieš tipo tyrimą, kad nebūtų reikalaujama skambinti stat (2) į kiekvieną failą.

rasti -type f -exec failas '{}' \;

Įrašo "failą" kiekviename faile esančioje kataloge arba po jo. Atkreipkite dėmesį, kad petnešos yra pridedamos prie vienos citatos ženklų, kad apsaugotų juos nuo interpretavimo kaip skystųjų kaklo skripčių skyrybos. Panašiai kabliataškis saugomas naudojant grįžtamąjį rėmelį, nors ";" galėjo būti naudojamas ir šioje byloje.

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

Vieną kartą perskaitykite failų sistemą, įrašydami setuid failus ir katalogus į /root/suid.txt ir didelius failus į /root/big.txt .

rasti $ HOME-mtime 0

Ieškokite savo namų kataloge esančių failų, kurie buvo pakeisti per pastarąsias dvidešimt keturias valandas. Ši komanda veikia taip, nes laikas, per kurį paskutinį kartą keista kiekviena byla, yra padalintas į 24 valandas, o bet koks likęs kiekis yra atmestas. Tai reiškia, kad rungtynės -mtime

0 , failas turi būti pakeistas praeityje, kuris yra mažiau nei prieš 24 valandas.

rasti 664 m

Ieškokite failų, kurie leido skaityti ir rašyti jų savininkui ir grupei, tačiau kuriuos kitus vartotojus galima skaityti, bet ne rašyti. Failai, kurie atitinka šiuos kriterijus, bet turi kitus leidimų bitus, nustatytus (pavyzdžiui, jei kas nors gali paleisti failą), nebus suderinti.

rasti -perm -664

Ieškoti failų, kurie turi savininko ir grupės leidimą skaityti ir rašyti, ir kuriuos kitus vartotojus galima perskaityti, neatsižvelgiant į tai, ar nėra papildomų leidimo bitų (pavyzdžiui, vykdomojo failo bitų). Tai atitiks failą, kurio pavyzdys yra 0777 režimas.

rasti -perm / 222

Ieškokite failų, kuriuos gali rašyti ką nors (jų savininkas, jų grupė ar kas nors kitas).

rasti -perm / 220 rasti. -perm / u + w, g + w rasti. -perm / u = w, g = w

Visi trys iš šių komandų atlieka tą patį, tačiau pirmasis naudoja aštuonkį failo režimo vaizdą, o kiti du naudoja simbolinę formą. Šios komandos visi ieško failų, kuriuos gali įrašyti jų savininkas arba jų grupė. Failai neturėtų būti rašomi tiek savininkui, tiek grupei, kuri turi atitikti; arba padarys.

rasti -perm -220 rasti. -perm -g + w, u + w

Abi šios komandos daro tą patį; ieškoti failų, kuriuos gali įrašyti jų savininkas ir jų grupė.

rasti -perm -444-mėn. / 222! -perm / 111 rasti. -perm -a + r-perm / a + w! -perm / a + x

Šios dvi komandos paimamos iš failų, kurie gali būti skaitomi visiems (-perm -444 arba -perm -a + r), turi bent jau rašymo bitų rinkinį (-perm / 222 arba -perm / a + w), bet nėra vykdomieji už kiekvieną (! -perm / 111 ir! -perm / a + x atitinkamai)

Svarbu: naudokite komandą man ( % man ), kad pamatytumėte, kaip komanda naudojama jūsų konkrečiame kompiuteryje.