Koristeći Linux i Unix Command: pronađite

Naredba Linux i Unix pronađu pretragu datoteka u hijerarhiji direktorija.

Sintaksa za naredbu find :

pronaći [put ...] [izraz]

Opis

Ova ručna stranica dokumentira GNU verziju nalaza . Naredba traži pretraživanje stabla direktorija ukorijenjene u svakom datom nazivu, vrednovanjem navedenog izraza s lijeva na desno, u skladu s pravilima prednosti (pogledajte odjeljak Operateri u nastavku), sve dok se rezultat ne zna; drugim riječima, lijeva strana je lažna i operacije, istinite za ili , u kojem trenutku pronađite poteze na sljedeći naziv datoteke.

Prvi argument koji počinje s:

smatra se početkom izraza; bilo koji argumenti prije nego što su putovi za pretraživanje, a svi argumenti nakon njega su ostatak izraza. Ako nema putova, koristi se trenutni direktorij. Ako se ne daje izraz, koristi se izraz -print .

Naredba za pretraživanje izlazi s statusom 0 ako su sve datoteke uspješno obrađene, veće od 0 ako se pojave pogreške.

izrazi

Izraz se sastoji od opcija (koje utječu na cjelokupni rad, a ne za obradu određene datoteke i uvijek se vraćaju istinito), testovi (koji vraćaju istinitu ili netočnu vrijednost) i radnje (koje imaju nuspojave i vraćaju istinitu ili lažna vrijednost), odvojeni od strane operatera. Izraz - i pretpostavlja se gdje je operator izostavljen. Ako izraz ne sadrži nikakve radnje osim -prune , tada se ispis izvodi na svim datotekama za koje je izraz istinit.

Opcije

Sve opcije uvijek se vraćaju istinito. Oni uvijek stupaju na snagu, a ne obrađuju se samo kada se postigne njihovo mjesto u izrazu. Stoga, za jasnoću, najbolje je staviti ih na početak izraza.

-daystart Vrijeme mjerenja (za -amin, -vremenu, -minu, -vremenu, -minu i -mtimeu ) od početka dana prije nego prije 24 sata.
-dubina Obradite sadržaj svake mape prije samog direktorija.
-slijediti Dereference simboličke veze. Podrazumijeva -noleaf .
- pomoć ili - pomoć Ispišite sažetak naredbenog retka za pronalaženje i izlaz.
-maxdepth [broj] Spušta najviše razine razina (ne-negativni cijeli broj) direktorija ispod argumenata naredbenog retka. Izraz " -maxdepth 0" znači da samo testove i akcije primjenjuju u argumente naredbenog retka.
-mindepth [broj] Nemojte primjenjivati ​​nikakve testove ili radnje na razinama nižim od broja (ne-negativni cijeli broj). Izraz -mindepth 1 znači da procesira sve datoteke osim argumenata naredbenog retka.
-mount Ne spuštajte direktorije na druge datotečne sustave. Alternativno ime za -xdev , za kompatibilnost s nekim drugim verzijama nalaza .
-noleaf Nemojte optimizirati pretpostavljajući da imenici sadrže 2 manje poddirektorija od njihovog broja čvrste veze. *
- verzija ili verzija Ispišite broj verzije i izađite iz verzije.
-xdev Ne spuštajte direktorije na druge datotečne sustave.

* Ova je opcija potrebna prilikom traženja datotečnih sustava koji ne slijede konvenciju povezivanja direktorija Unix, kao što su CD-ROM ili MS-DOS datotečni sustavi ili AFS bodovi za montiranje volumena. Svaki direktorij na normalnom Unix datotečnom sustavu ima najmanje 2 tvrdih veza: njegovo ime i njeno . (razdoblje). Dodatno, njegove poddirektorije (ako ih ima) imaju svaki .. unos koji je povezan s tim direktorijem.

Kada pronađe ispitivanje direktorija, nakon što je stigla dva manje poddirektorija od brojeva veze u direktoriju, zna da ostali unosi u direktoriju nisu direktori (datoteke listova u stablu direktorija). Ako treba pregledati samo imena datoteka, nema potrebe da ih se prijavite; to daje značajan porast brzine pretraživanja.

testovi

Numerički argumenti mogu se navesti kao:

+ n Za veće od n.
-n Za manje od n.
n Za točno n.
-amin n Datoteka je zadnji put pristupila prije n minuta.
- više [datoteka] Datoteka je zadnji put pristupila nedavno jer je datoteka izmijenjena. - pogođen je novi - slijedi samo ako - slijedi prije - novi tekst na naredbenom retku.
- vrijeme n Datoteka je zadnji put pristupila n * prije 24 sata.
-cmin n Status datoteke zadnji put promijenjen je prije n minuta.
-cnewer [datoteka] Status datoteke zadnji je put promijenjen nego je datoteka izmijenjena.
- cnewer je pogođen - slijedi samo ako - slijedi prije - cnewer na naredbenom retku.
- vrijeme n Status datoteke zadnji je put promijenjen n * prije 24 sata.
-prazan Datoteka je prazna i redovna je datoteka ili direktorij.
-false Uvijek je lažno.
-fstype [tip] Datoteka se nalazi na datotečnom sustavu određene vrste. Valjani tipovi datotečnih sustava razlikuju se između različitih verzija Unixa; nepotpuni popis vrsta datotečnih sustava koji su prihvaćeni na nekoj verziji Unix ili drugog: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Možete koristiti -printf s% F direktivom da biste vidjeli vrste vaših datotečnih sustava.
-gid n Brojni ID skupine grupe je n .
grupa [ime] Datoteka pripada skupini gname (dozvoljena numerička grupa ID).
- naziv [uzorak] Kao i -lname, ali utakmica je neosjetljiva na slučajeve.
- u [pattern] Kao - ime , ali utakmica je neosjetljiva na slučajeve. Na primjer, obrasci za * i F? podudaraju se imena datoteka Foo , FOO , foo , fOo itd.
-inum n Datoteka ima inode broj n .
-ipat [obrazac] Kao što je -Path , ali utakmica je slučajno neosjetljiva.
-regex [obrazac] Kao i -regex, ali utakmica je neosjetljiva na slučajeve.
povezuje n Datoteka ima n veze.
- naziv [obrazac] Datoteka je simbolična veza čiji sadržaj odgovara obrascu ljuske. Metakarakteri ne liječe ili . posebno.
-mmin n Podaci o datoteci posljednji su put promijenjeni prije n minuta.
- vrijeme n Podaci o datoteci posljednji su se promijenili prije 24 sata.
-name [obrazac] Baza imena datoteke (put s vodećim direktorijima uklonjen) odgovara obrascu ljuske. Metakarakteri ( * , ? , I [] ) ne podudaraju se s . na početku naziva baze. Da biste zanemarili direktorij i datoteke ispod nje, upotrijebite -prune ; pogledajte primjer u opisu -path .
-newer [datoteka] Datoteka je nedavno modificirana od datoteke . Izraz " novi kanal" je pogođen - slijedi samo ako - slijedi prije - novo na naredbenom retku.
-nouser Nijedan korisnik ne odgovara numeričkom korisničkom ID-u datoteke.
-nogroup Nijedna grupa ne odgovara numeričkoj grupi ID datoteke.
-path [obrazac] Naziv datoteke odgovara uzorku sheme . Metakarakteri ne liječe ili . posebno; tako, na primjer, pronaći. -path './sr*sc će ispisati unos za direktorij pod nazivom ./src/misc (ako postoji). Da biste zanemarili cijelo stablo direktorija, upotrijebite -prune, a ne provjeravajte svaku datoteku na stablu. Na primjer, preskočite direktorij src / emacs i sve datoteke i direktorije ispod njega i ispisati imena drugih pronađenih datoteka, učinite nešto ovako: pronađite. -path './src/emacs' -prune -o -print
-perm [način] Dopuštenja za dopuštenje datoteke su točno [način] (oktalni ili simbolički). Simbolski modovi koriste način 0 kao polaznu točku.
-perm-modus Svi su dopušteni bitovi [mod] postavljeni za datoteku.
-perm + način Bilo koji od dozvoljenih bitova [način] postavljen je za datoteku.
-regex [obrazac] Naziv datoteke odgovara regularnom uzorku ekspresije. Ovo je utakmica na cijelom putu, a ne na pretraživanju. Na primjer, da biste podudarali datoteku s imenom ./fubar3, možete upotrijebiti pravilan izraz *. ili . * b. * 3 , ali ne b. * r3 .
-size n [bckw] Datoteka koristi n jedinice prostora. Jedinice su defaultno blokovi od 512 byte ili ako b slijedi n , bajtova ako c slijedi n , kilobajta ako k slijedi n , ili 2 bajta riječi ako w slijedi n . Veličina ne broji indirektne blokove, ali broji blokove u rijetkim datotekama koje zapravo nisu dodijeljene.
-pravi Uvijek je istina.
tip c Datoteka je tipa c :
b Blokiraj (puferiran) poseban
c Posebnost znaka (nedopuštenog)
d Imenik
p Nazivna cijev (FIFO)
f Redovna datoteka
l Simbolička veza
a utičnica
D vrata (Solaris)
-uplaćen n Brojni korisnički ID datoteke je n .
upotrijebio n Datoteku je zadnji put pristupilo n dana nakon što je zadnji put promijenjen status.
upotrijebiti uname Datoteka je u vlasništvu korisnika uname (dopušteno je numeričko korisničko ime).
-xtype c Isto kao tip, osim ako datoteka nije simbolična veza. Za simboličke veze: ako se ne dobije " slijed" , to je točno ako je datoteka veza na datoteku tipa c ; ako je dano, slijedi ako je c . Drugim riječima, za simboličke veze,
-xtype provjerava vrstu datoteke koju tip ne provjerava.

akcije

-exec naredba ;

Izvršiti naredbu ; true ako je status 0 vraćen. Svi sljedeći argumenti za pronalaženje smatraju se argumentima naredbi sve dok argument koji se sastoji od ";" se susreće. Niz {{} zamjenjuje se trenutnim nazivom koji se obrađuje svugdje gdje se pojavljuje u argumentima naredbi, a ne samo u argumentima gdje je sam, kao u nekim verzijama nalaza . Obje ove konstrukcije trebaju biti izbjegnute (s '\') ili citiranima kako bi ih zaštitili od ekspanzije od ljuske. Naredba se izvršava u početnom direktoriju.

-fls datoteku

Pravi; poput -ls, ali pisati na datoteku kao što je -fprint.

-fprint datoteku

Pravi; ispisati cijeli naziv datoteke u datoteku . Ako datoteka ne postoji kada se traži nalaz , nastaje; ako postoji, to je skraćeno. Nazivi datoteka `` / dev / stdout '' i `` / dev / stderr '' obrađuju se posebno; oni se odnose na standardni izlaz i standardnu ​​pogrešku, odnosno.

-fprint0

Pravi; poput -print0, ali pisati na datoteku kao što je -fprint.

-fprintf format datoteke

Pravi; poput -printf, ali pisati na datoteku kao što je -fprint.

-ok naredba ;

Poput "exec", ali najprije pitajte korisnika (na standardnom ulazu); ako odgovor ne počne s "y" ili "Y", nemojte pokrenuti naredbu i vratiti lažnu.

-print

Pravi; ispisati cijeli naziv datoteke na standardnom izlazu, nakon čega slijedi novi redak.

-print0

Pravi; ispisati cijeli naziv datoteke na standardnom izlazu, nakon čega slijedi null znak. To omogućuje nazive datoteka koje sadrže nove linije za ispravno tumačenje programa koji obrađuju izlazne rezultate.

-printf format

Pravi; format ispisa na standardnom izlazu, tumačenje `\ 'escapeova i'% 'direktiva. Širine polja i preciznosti mogu se odrediti kao kod funkcije `printf 'C. Za razliku od -print, -printf ne dodaje novu liniju na kraju niza. Izbjeći i direktivi su:

\ a

Alarmno zvono.

\ b

Backspace.

\ c

Zaustavite ispis odmah iz ovog formata i ispirajte izlaz.

\ f

Ulaganje obrasca.

\ n

Nova linija.

\ r

Povrat prtljage.

\ t

Horizontalna kartica.

\ v

Okomita kartica.

\\

Doslovni povratni udarac (`\ ').

\ NNN

Znak čiji je ASCII kod NNN (oktalni).

'\' Znak praćen bilo kojim drugim znakom tretira se kao obični lik pa se oboje ispisuju.

%%

Doslovni postotni znak.

% a

Dohvat posljednjeg vremena pristupa u formatu koji se vraća pomoću funkcije C `ctime.

% A k

Posljednje vrijeme pristupa datoteci u formatu navedenom u k , koji je ili "@" ili direktiva za funkciju C `strftime '. Moguće vrijednosti za k su navedene u nastavku; neki od njih možda neće biti dostupni na svim sustavima, zbog razlika u "strftime" između sustava.

@

sekunde od 1. siječnja 1970, 00:00 GMT.

Vremenska polja:

H

sat (00..23)

ja

sat (01..12)

k

sat (0..23)

l

sat (1..12)

M

minuta (00..59)

p

lokalni AM ili PM

r

vrijeme, 12 sati (hh: mm: ss [AP] M)

S

drugi (00..61)

T

vrijeme, 24 sata (hh: mm: ss)

x

vremensko zastupanje vremenske zone (H: M: S)

Z

vremensku zonu (npr., EDT) ili ništa ako se ne može utvrditi vremenska zona

Polja datuma:

skraćeno ime dana u tjednu (Sunce .. Sati)

cijeli dan u tjednu, promjenjive duljine (nedjelja .. subota)

b

Naziv skraćenog mjeseca (Jan.Dec)

B

naziv cijele mjesne lokacije, duljina varijable (siječanj ... prosinac)

c

locale's datum i vrijeme (sub 4.sr.11 12:02:33 EST 1989)

d

dan u mjesecu (01..31)

D

datum (mm / dd / yy)

h

isto kao i b

j

dan u godini (001..366)

m

mjesec (01..12)

U

tjedni broj godine s nedjeljom kao prvi dan u tjednu (00..53)

w

dan u tjednu (0..6)

W

tjedni broj godine s ponedjeljak kao prvi dan u tjednu (00..53)

x

zastupljenost datuma mjeseca (mm / dd / yy)

y

posljednje dvije znamenke godine (00..99)

Y

godina (1970 ...)

% b

Veličina datoteke u blokovima od 512 bajta (zaokruženo).

% c

Zadnji datum datoteke mijenja vrijeme u formatu koji se vraća pomoću funkcije C `ctime.

% C k

Zadnji statusi datoteke mijenjaju vrijeme u formatu koji je naveden s k , što je isto kao za% A.

% d

Dubina datoteke u stablu direktorija; 0 znači da je datoteka argument argumenta.

% f

Uklonjen je naziv datoteke s bilo kojim vodećim direktorijima (samo posljednji element).

% F

Vrsta datotečnog sustava na kojem je datoteka uključena; ta se vrijednost može koristiti za -fstype.

% g

Naziv skupine datoteke ili ID numeričke grupe ako grupa nema ime.

% G

ID brojčane grupe ID datoteke.

% h

Vodeće imenike naziva datoteke (sve osim posljednjeg elementa).

% H

Argument naredbene retke u kojem je datoteka pronađena.

% i

Broj inode datoteke (u decimalnom obliku).

% k

Veličina datoteke u blokovima od 1K (zaokruženo).

% l

Objekt simboličke veze (prazan niz ako datoteka nije simbolična veza).

% m

Datoteke dopuštenja bitova (u oktalni).

% n

Broj tvrdih veza do datoteke.

% p

Naziv datoteke.

% P

Naziv datoteke s nazivom argumenta naredbene linije pod kojim je pronađen uklonjen.

% s

Veličina datoteke u bajtovima.

% t

Posljednje vrijeme izmjene datoteke u formatu koji se vraća pomoću funkcije C `ctime.

% T k

Posljednja izmjena vremena datoteke u formatu koji je naveden s k , što je isto kao za% A.

% u

Korisničko ime datoteke ili brojčani korisnički ID ako korisnik nema ime.

% U

Brojčani korisnički ID datoteke.

Odbacuje se znak "%" praćen bilo kojim drugim znakom (ali se ispisuje drugi znak).

-obrezati

Ako se ne daje diktat, istina; ne spuštajte trenutni direktorij.
Ako je dano, netočno; bez efekta.

-ls

Pravi; popis trenutne datoteke u formatu `ls-dils 'na standardnom izlazu. Broj blokova je blokova od 1K, osim ako nije postavljena varijabla okruženja POSIXLY_CORRECT, u kojem se slučaju koriste blokovi od 512 bajta.

operatori

Navedeni redoslijedom smanjenja prednosti:

( expr )

Prednost snage.

! Expr

Istina je da je expr lažna.

- ne expr

Isto kao ! npr .

expr1 expr2

I (implicirano); expr2 ne procjenjuje se ako je expr1 lažno.

expr1- expr2

Isti kao expr1 expr2 .

expr1 i expr2

Isti kao expr1 expr2 .

expr1- oprprpr2

Ili; expr2 ne procjenjuje se ako je true1 .

expr1 ili expr2

Isti kao expr1- o expr2 .

expr1 , expr2

Popis; i expr1 i expr2 uvijek se procjenjuju. Vrijednost expr1 odbačena je; vrijednost popisa je vrijednost expr2 .

Primjeri

pronađite / koristite se

Pronađite svaku datoteku ispod direktorija / kuće u vlasništvu korisnika joe.

pronađi / usr -name * stat

Pronađite svaku datoteku u direktoriju / usr koja završava u ".stat".

pronađite / var / spool -mtime +60

Pronađite svaku datoteku u direktoriju / var / spool koji je promijenjen prije više od 60 dana.

pronađi / tmp-name core-type f -print | xargs / bin / rm-f

Pronađite datoteke s imenom jezgre u ili ispod direktorija / tmp i izbrišite ih. Imajte na umu da će to biti neispravno ako postoje nazivi datoteka koji sadrže nove linije, jednokratne ili dvostruke navodnike ili razmake.

pronađi / tmp-name core-tip f -print0 | xargs -0 / bin / rm-f

Pronađite datoteke s imenom jezgre u ili ispod direktorija / tmp i izbrišite ih, obradite nazive datoteka na takav način da se datoteke ili nazivi direktorija koji sadrže jednokratne ili dvostruke navodnike, prostore ili nove linije ispravno obrađuju. Ispitivanje naziva dolazi prije testa tipa kako bi se izbjeglo pozivanje stat (2) na svaku datoteku.

pronaći . tipa f -exec datoteku '{}' \;

Pokreće `datoteku 'na svakoj datoteci ispod ili ispod trenutnog direktorija. Imajte na umu da su potpornji zatvoreni u pojedinačnim oznakama navodnjavanja kako bi ih zaštitili od tumačenja kao interpunkcije skriptnih skripti. Točka-zarez sličan je zaštićen upotrebom obruba, iako ';'; u tom slučaju također mogu biti korišteni.

\\ (/ size / 100M -fprintf /root/big.txt '% -10s% \ "% s \ p \ n ')

Preusmjerite datotečni sustav samo jednom, unesite setuid datoteke i direktorije u /root/suid.txt i velike datoteke u /root/big.txt .

pronađite $ HOME - vrijeme 0

Potražite datoteke u vašem kućnom imeniku koje su izmijenjene u zadnjih dvadeset četiri sata. Ova naredba funkcionira na taj način jer je vrijeme od posljednje izmjene datoteke podijeljeno za 24 sata, a ostatak je odbačen. To znači da se podudaraju s vremenom

0 , datoteka će morati imati izmjenu u prošlosti koja je manje od 24 sata prije.

pronaći . -perma 664

Potražite datoteke koje imaju dopuštenje za čitanje i pisanje za vlasnika i grupu, ali koje drugi korisnici mogu čitati, ali ne i pisati. Datoteke koje udovoljavaju tim kriterijima, ali imaju druge bitove za dopuštenje (na primjer, ako netko može izvršiti datoteku) neće se podudarati.

pronaći . -perm-664

Pretražite datoteke koje imaju dopuštenje za čitanje i pisanje vlasniku i grupi, a koje drugi korisnici mogu čitati, bez obzira na prisutnost dodatnih bitova za dopuštenje (na primjer, izvršni bit). To će odgovarati datoteci koja ima način rada 0777, na primjer.

pronaći . -perm / 222

Potražite datoteke koje je moguće zapisati netko (njihov vlasnik, njihova grupa ili bilo tko drugi).

pronaći . -perm / 220 naći. -perm / u + w, g + w pronašli. -perm / u = w, g = w

Sve tri ove naredbe rade isto, ali prva koristi oktalnu reprezentaciju načina rada datoteka, a druga dva koriste simbolički oblik. Te naredbe traže sve datoteke koje mogu pisati bilo vlasnik ili njihova grupa. Datoteke ne moraju biti pisane od strane vlasnika i skupine koje treba podudarati; ili će to učiniti.

pronaći . -perm -220 naći. -perm -g + w, u + w

Obje ove naredbe rade isto; pretražujte datoteke koje mogu pisati i vlasnik i njihova grupa.

pronaći . -perm-444 -perm / 222! -perm / 111 naći. -perma -a + r -perm / a + w! -perm / a + x

Ove dvije naredbe traže datoteke čitljive za sve (-perm -444 ili -perm -a + r), barem na setu za pisanje bitova (-perm / 222 ili -perm / a + w), ali nisu izvršne za bilo koga (! -perm / 111 i! -perm / a + x)

Važno: Upotrijebite naredbu čovjek ( % man ) kako biste vidjeli kako se naredba koristi na vašem računalu.