Komandos Linux ir Unix rasti vykdo failų paiešką katalogo hierarchijoje.
Sintaksė rasti komanda:
rasti kelias … išraiška
apibūdinimas
Šiame vadovo puslapyje dokumentuojama GNU versija rasti . Komanda rasti ieško katalogo medžio, įsišaknijančio kiekvieno konkretaus failo pavadinimo, vertinant nurodytą išraišką iš kairės į dešinę pagal pirmumo taisykles (žr. skyrių Operatoriai žemiau), kol rezultatas bus žinomas; kitaip tariant, kairė pusė yra neteisinga ir operacijos, tiesa arba , tuo metu rasti pereina prie kito failo pavadinimo.
Pirmasis argumentas, prasidedantis:
- -
- ( arba),
- !
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, išraiška -print yra naudojamas.
The rasti komanda išeina su būsena 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. Išsireiškimas ir manoma, kad operatorius yra praleistas. Jei išraiška nėra kitų veiksmų, išskyrus -prunelis , tada -print yra atliekamas visuose failuose, kurių 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 | Matuojamas laikas (už -amin, -atime, -cmin, -ctime, -mmin, ir -mtime ) nuo šiandien pradžios, o ne nuo prieš 24 valandų. |
| -depth | Proceso kiekvieno katalogo turinys prieš patį katalogą. |
| - toliau | Pašalinti simbolines nuorodas. Prisimena -noleafas . |
| -pagalba arba --Pagalba | Spausdinkite komandinės eilutės naudojimo santrauką rasti ir išeiti. |
| -maxdepth numeris | Žemyn komandų eilutės argumentų nusileiskite daugelyje lygių (neigiamas sveikasis skaičius). Išsireiškimas -maxdepth 0 reiškia tik tuos testus ir veiksmus taikyti komandinės eilutės argumentams. |
| -mindeft number | Nenaudokite jokių bandymų ar veiksmų lygiais, mažesniais nei skaičius (neigiamas sveikasis skaičius). Išsireiškimas -mindeptas 1 reiškia procesą visus failus, išskyrus komandinės eilutės argumentus. |
| -mount | Neapleiskite katalogų kitose failų sistemose. Alternatyvus pavadinimas -xdev , suderinamumas su kai kuriomis kitomis versijomis rasti . |
| -noleafas | Negalima optimizuoti, darant prielaidą, kad kataloguose yra 2 mažiau katalogučių nei jų kietųjų nuorodų skaičius. * |
| -versija arba --versija | Spausdinti rasti versijos numeris ir išėjimas. |
| -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, kiekvieno jų pakatalogiai (jei yra). įrašas, susietas su tuo aplanku.
Kada rasti tikrina katalogą, kai jis sukūrė du mažiau pakatalogių nei katalogo nuorodų skaičius, jis žino, kad likę įrašai kataloge yra ne katalogai ( lapai failai kataloge 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 nei n. |
| -n | Mažiau nei n. |
| n | Tiksliai n. |
| -amin n | Paskutinį kartą pasiektas failas n Prieš minutę. |
| -newer failas | Failas paskutinį kartą buvo pasiektas neseniai failas buvo pakeistas. -newer paveikia -follow tik tada, jei -follow ateina anksčiau - pirmiau komandų eilutėje. |
| -atme n | Paskutinį kartą pasiektas failas n * Prieš 24 val. |
| -cmin n | Failo būsena paskutinį kartą buvo pakeista n Prieš minutę. |
| -cnewer failas | Failo būsena paskutinį kartą buvo pakeista neseniai, kai failas buvo pakeistas.- cnewer yra paveikta - toliau tik jeigu - toliau ateina anksčiau -kietinis komandinėje 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 skaitmeninis 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 | Kaip -vardas , tačiau rungtynės yra nereikšmingos. Pavyzdžiui, modeliai fo * ir F ?? suderinti failų pavadinimus Foo , FOO , foo , fOo ir tt |
| -inum n | Failas turi inode numerį n . |
| -pita modelis | Kaip - kelias , tačiau rungtynės yra nereikšmingos. |
| -iregeksas modelis | Panašiai kaip -regex, tačiau rungtynės yra nereikšmingos. |
| - nuorodos n | Failas yra n nuorodos. |
| -lname modelis | Failas yra simbolinė nuoroda, kurios turinys atitinka apvalkalo struktūrą. Metachartikai nėra gydomi / arba . specialiai. |
| -mmin n | Failo duomenys paskutinį kartą buvo pakeisti n Prieš minutę. |
| -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ą. Metaforumai (*, ?, ir ) neatitinka a . bazinio pavadinimo pradžioje. Jei norite ignoruoti aplanką ir jo failus, naudokite -prunelis ; žr. pavyzdyje aprašyme - kelias . |
| -newer failas | Failas buvo pakeistas neseniai kaip failas . Išsireiškimas -nėra yra paveikta - toliau tik jeigu - toliau ateina anksčiau -nėra 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 šabloną modelis . Metachartikai nėra gydomi / arba . specialiai; taip, pavyzdžiui,rasti "kelias" ./sr * sk bus atspausdintas katalogo, pavadinto ./src/misc, įrašas (jei jis egzistuoja). Norėdami ignoruoti visą katalogų medį, naudokite -prunelis o ne patikrinti kiekvieną medžio failą. Pavyzdžiui, jei norite praleisti katalogą src / emacs ir visus failus ir katalogus, esančius po juo, ir spausdinti kitų failų pavadinimus, raskite panašų:rasti -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 nustatytos failui. |
| -perm + režimas | Bet koks leidimo bitas režimas yra nustatytos failui. |
| -regex modelis | Failo pavadinimas atitinka įprastą išraišką modelis . 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ą . * baras. arba . * b. * 3, bet ne b. * r3. |
| dydis n bckw | Failas naudoja n kosmoso vienetai. Vienetai pagal nutylėjimą yra 512 baitų blokai, o jei b n , baitai, jei c seka n , kilobaitų, jei k išlieka n , arba 2-baitų žodžiai, jei w eina 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 tipo c : |
| 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 | Paskutinį kartą pasiektas failas n dienų, kai jos statusas paskutinį kartą pasikeitė. |
| -user uname | Failas priklauso vartotojui uname (leidžiamas skaitinis naudotojo ID). |
| -pagrindas c | Tokspat tipo nebent byla yra simbolinė nuoroda. Dėl simbolinių nuorodų: jei - toliau nebuvo suteikta, tiesa, jei failas yra nuoroda į failo tipą c ; jei - toliau buvo suteikta, tiesa, jei c yra l. Kitaip tariant, simbolinėms nuorodoms, -štype Patikrina failo tipą, kuris yra tipo netikrina. |
Veiksmai
-exec komanda ;
Vykdyti komanda ; tiesa, jei grąžinamas 0 statusas. Visi šie argumentairasti yra laikomi argumentais komandai, kol argumentas, susidedantis iš ";" susiduriama. Styga `() 'pakeičiama dabartiniu failo pavadinimu, kuris yra apdorojamas visur, kur jis atsiranda komandos argumentuose, o ne tik argumentuose, kuriuose jis yra vienas, kaip kai kuriose versijoserasti. 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; kaip-l, bet parašyk failas kaip -fprint.
-fprint failas
Tiesa; išspausdinti visą failo vardą į failą failas . Jei failas neegzistuoja, kairasti yra paleistas, jis yra sukurtas; 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 failas kaip -fprint.
-fprintf failas formatas
Tiesa; kaip -printf, bet rašyk failas kaip -fprint.
-Gerai komanda ;
Panašiai kaip -exec, bet pirmiausia paklauskite vartotojo (įprasto įvesties); jei atsakymas neprasideda "y" arba "Y", paleiskite komandą ir grąžinkite neteisingą.
Tiesa; išspausdinkite visą failo vardą į standartinę išvestinę, o po to - naują 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 tvarkorasti produkcija
-printf formatas
Tiesa; spausdinti formatas 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 nurodytas formatu k , kuris yra arba "@", arba funkcija C `strftime '. Galimos vertės k 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)
Aš
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 zona (pvz., EDT) arba nieko, jei nėra laiko zonos nustatymo
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
Paskutinio failo būklės keitimo laikas nurodyta formatu k , kuri yra tokia pati 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 paskutinysis modifikavimo laikas formatu, nurodytu k , kuri yra tokia pati 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. Nurodyta mažėjančia tvarka: ( expr ) Prievarta prieš valdžią. ! expr Tiesa, jei expr yra klaidinga. - ne expr Taip pat kaip ! expr . expr1 expr2 Ir (numanomas); expr2 nėra įvertintas, jei expr1 yra klaidinga. expr1 -a expr2 Taip pat kaip expr1 expr2 . expr1 ir expr2 Taip pat kaip expr1 expr2 . expr1 -o expr2 Arba; expr2 nėra įvertintas, jei expr1 tiesa. expr1 -or expr2 Taip pat kaip expr1 -o expr2 . expr1 , expr2 Sąrašas; abu expr1 ir expr2 visada yra vertinami. Vertė expr1 yra atmestas; sąrašo vertė yra expr2 . 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
Rasti failus pavadinimubranduolys kataloge arba po jo/ tmp 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
Rasti failus pavadinimubranduolys kataloge arba po jo/ tmp ir ištrinkite juos, tvarkydami failų pavadinimus taip, kad failų ar katalogų pavadinimai, kuriuose yra vieno ar dvigubo kabučių, tarpų ar naujų eilučių, būtų tinkamai tvarkomi. The-vardas bandymas prasideda anksčiautipo bandymas, kad būtų išvengta skambučiostat (2) ant kiekvieno failo. 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ą, įtraukdami į sąrašą rinkmenų ir katalogų rinkmenas/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 -mintis -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: Naudoti vyras komanda ( % vyras ), kad pamatytumėte, kaip komanda naudojama jūsų konkrečiame kompiuteryje.Operatoriai
Pavyzdžiai













