Korišćenje Linux i Unix naredbe: pronaći

Komanda Linux i Unix pronalazi izvršava pretragu datoteka u hijerarhiji direktorijuma.

Sintaksa za pronalazak naredbe:

nađite [put ...] [izraz]

Opis

Ova stranica priručnika dokumentuje GNU verziju pronalaska . Komanda pronalazi pretragu stabla direktorija ukorijenjenih za svaki dato ime fajla procenjivanje datog izraza s leva na desno, prema pravilima precedence (pogledajte odeljak o operaterima ispod), sve dok ishod nije poznat; Drugim rečima, leva strana je lažna i operativna, tačno za ili , u kojoj tački se nalazi potez na sledeće ime datoteke.

Prvi argument koji počinje sa:

smatra se početkom izraza; svi argumenti pre njega su putanja za pretragu, a svi argumenti nakon toga predstavljaju ostatak izraza. Ako nijedne staze nisu date, trenutni direktorij se koristi. Ako nije dat izraz, izraz se koristi.

Komanda find nalazi se sa statusom 0 ako se svi fajlovi uspešno obradjuju, veći od 0 ako dođe do grešaka.

Izrazi

Izraz se sastoji od opcija (koje utiču na celokupan rad, a ne na obradu određene datoteke, i uvijek se vraćaju istinito), testovi (koji vraćaju istinitu ili lažnu vrijednost) i akcije (koje imaju neželjene efekte i vraćaju istinitu ili lažna vrijednost), sve ih razdvoje operaterima. Izraz - i pretpostavlja se kada je operater ispušten. Ako izraz ne sadrži druge akcije osim -prune , onda se -print vrši na svim datotekama za koje je izraz istinit.

Opcije

Sve opcije uvek se vraćaju u istinitost. Uvek stupe na snagu, umesto da se obrađuju samo kada se postigne njihovo mesto u izrazu. Prema tome, zbog jasnoće, najbolje je staviti ih na početak izraza.

-danstart Izmerite vremena (za- amin, -atime, -cmin, -ime, -mmin i -mtime ) od početka dana, a ne pre 24 sata.
-dubina Obrađite sadržaj svakog direktorijuma pre samog direktorijuma.
-pratiti Dereference simboličke veze. Implikacije - noleaf .
-help ili -help Štampajte sažetak korištenja komandne linije za pronalazak i izlaz.
-maxdepth [broj] Smanji se na najviše nivoa (ne-negativan ceo broj) direktorija ispod argumenata komandne linije. Izraz -maxdepth 0 znači samo primeniti testove i radnje na argumente komandne linije.
-mindepth [broj] Ne primenjujte nikakve testove ili radnje na nivoima manji od broja (ne-negativnog celog broja). Izraz -mindepth 1 podrazumeva obradu svih datoteka osim argumenata komandne linije.
-mount Ne spuštajte direktorijume na druge sistemske datoteke. Alternativno ime za -xdev , za kompatibilnost sa nekim drugim verzijama nalaza .
-noleaf Ne optimizujte se pod pretpostavkom da direktorije sadrže 2 manje poddirektorijuma od broja njihovih tvrdih veza. *
-version ili - verzija Odštampajte broj pronađene verzije i izađite.
-xdev Ne spuštajte direktorijume na druge sistemske datoteke.

* Ova opcija je potrebna prilikom pretraživanja datotečnih sistema koji ne prate konvenciju Unix directory-link, kao što su CD-ROM ili MS-DOS datotečni sistemi ili AFS tačke za montiranje jačine zvuka. Svaki direktorijum u običnom Unix datotečnom sistemu ima najmanje 2 hard veze: njegovo ime i njegovo . (period). Pored toga, njegovi poddirektoriji (ako ih ima) imaju .. unos povezan sa tim direktorijumom.

Kada se pronadje ispituje direktorijum, nakon što je objavio dva manje poddirektorija od broja brojeva linkova direktorijuma, zna da su ostali unosi u direktorijumu ne-direktorijumi ( lista listova u stablu direktorija). Ako treba samo ispitati imena datoteka, nema potrebe da ih statuje; ovo daje značajno povećanje brzine pretraživanja.

Testovi

Numerički argumenti se mogu specificirati kao:

+ n Za više od n.
-n Za manje od n.
n Za tačno n.
-amin n Datoteka je poslednji put primljena pre n minuta.
-anue [file] Datoteka je poslednji put pristupila u skorije vreme nego što je datoteka izmijenjena. - na drugi je pod uticajem - samo ako - dolazi prethodno - na komandnoj liniji.
-atime n Datoteka je poslednji put pristupila n * pre 24 sata.
-cmin n Status datoteke je poslednji put izmenjen prije n minuta.
-cnewer [fajl] Status datoteke je poslednji put promijenjen nego što je datoteka izmijenjena.
- cnewer je pod utjecajem - samo ako je - dolazi ranije - novo na komandnoj liniji.
-ctime n Status datoteke je poslednji put promenjen prije 24 sata.
- bezobrazno Datoteka je prazna i predstavlja ili običan fajl ili direktorijum.
-pr Uvek netačno.
-fstype [tip] Datoteka se nalazi na datoteci određenog tipa. Pravilni tipovi sistema se razlikuju u različitim verzijama Unix-a; nepotpuna lista tipova datotečnih sistema koja su prihvaćena na nekoj verziji Unix-a ili drugoj su: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Možete koristiti -printf sa direktivom% F da biste videli vrste vaših datotečnih sistema.
-gid n ID numeričke grupe datoteke je n .
-group [gname] Datoteka pripada grupi gname (dozvoljena je numerička grupa ID).
-ilname [obrazac] Kao - ime, ali utakmica je neosjetljiva.
-inam [obrasca] Kao -name , ali utakmica je neosetljiva. Na primer, šabloni za * i F? odgovara imena datoteka Foo , FOO , foo , fOo , itd.
-inum n Datoteka ima inode broj n .
-apat [obrazac] Kao -path , ali utakmica je neosjetljiva.
-iregex [obrazac] Kao -regeks, ali utakmica je neosjetljiva.
-links n Datoteka ima n linkova.
-lname [obrazac] Datoteka je simbolična veza čiji se sadržaj podudara s šablonskim šablonom. Metakarakterije ne tretiraju / ili . posebno.
-mmin n Podaci o fajlu su poslednji put izmenjeni prije n minuta.
-mtime n Podaci o fajlu su poslednji put izmenjeni n * pre 24 sata.
-name [obrazac] Baza imena datoteke (putanja sa uklonjenim vodećim direktorijumima) odgovara šablonu. Metakarakterije ( * ,? I [] ) ne odgovaraju a . na početku baznog imena. Da ignorišete direktorij i datoteke ispod njega, koristite -prune ; pogledajte primer u opisu -path .
-newer [fajl] Datoteka je nedavno izmijenjena od datoteke . Izraz -newer je pod utjecajem -puljava samo ako -naprijed dolazi pre -newer na komandnoj liniji.
-najser Nijedan korisnik ne odgovara numeričkom ID-u datoteke datoteke.
-nogroup Nijedna grupa ne odgovara brojevnom ID-u datoteke datoteke.
-pat [obrazac] Ime datoteke odgovara šablonskom šablonu . Metakarakterije ne tretiraju / ili . posebno; tako, na primer, pronađite. -path './sr*sc će štampati unos za direktorijum pod nazivom ./src/misc (ako postoji). Za ignorisanje cijelog stabla direktorija, koristite -prune umesto da proveravate svaku datoteku u stablu. Na primer, da preskočite direktorijum src / emacs i sve datoteke i direktorije ispod njega i da odštampate imena drugih pronađenih datoteka, uradite nešto ovako: pronađite. -path './src/emacs' -prune -o -print
-perm [mod] Bitovi dozvole datoteke su tačno [režim] (oktalni ili simbolični). Simbolički režimi koriste način 0 kao polaznu tačku.
-perm-mod Svi bitovi za dozvolu [mod] su postavljeni za datoteku.
-perm + mod Bilo koji od dozvoljenih bitova [režim] podešeni su za datoteku.
-regex [obrazac] Ime datoteke odgovara obrazcu regularnog izraza. Ovo je tek na celom putu, a ne na pretraživanju. Na primer, da biste podesili datoteku pod imenom ./fubar3, možete koristiti regularni izraz . * Bar. ili . * b. * 3 , ali ne b. * r3 .
-size n [bckw] Datoteka koristi n jedinice prostora. Jedinice su podrazumevano podrazumevane veličine 512-bajtnih blokova ili ako b sledi n , bajtova ako c sledi n , kilobajta ako k sledi n , ili 2-bajtne reči, ako w sledi n . Veličina ne broji indirektne blokove, već broji blokove u retkim datotekama koje nisu stvarno dodijeljene.
-istinito Uvijek je istina.
tip c Datoteka je tipa c :
b Blok (puferiran) poseban
c Karakter (neupotrebljen) poseban
d Imenik
str Nazivna cijev (FIFO)
f Regularna datoteka
l Simbolička veza
s Utičnica
D vrata (Solaris)
-uid n Numerički korisnički ID datoteke je n .
-used n Datoteka je poslednji put pristupila n dan nakon promene statusa.
-ususer uname Datoteka je u vlasništvu korisnika uname (numerički korisnički ID je dozvoljen).
-tip c Isto kao i tip, osim ako je datoteka simbolična veza. Za simboličke veze: ako -follow nije data, tačno ako je datoteka veza do datoteke tipa c ; ako je data -follow , tačno ako je c l. Drugim rečima, za simboličke veze,
-stype proverava vrstu datoteke koju -type ne proverava.

Akcije

-exec command ;

Izvrši naredbu ; tačno ako je vraćeno 0 status. Sljedeći argumenti za pronalazak smatraju se argumentima komande sve dok argument koji se sastoji od `; ' nailazi. Niz `{} 'zamenjuje se trenutnim nazivom datoteke koji se obrađuje svuda gde se pojavljuje u argumentima komandi, ne samo u argumentima gde je sam, kao u nekim verzijama nalaza . Obe ove konstrukcije možda će morati biti izbačene (sa `\ ') ili ih citirati kako bi ih zaštitili od proširenja za ljusku. Komanda se izvršava u početnom direktorijumu.

-fls file

Istinito; poput -ls, ali pišete u datoteku kao -print.

-print datoteka

Istinito; odštampajte pun naziv datoteke u datoteku datoteke . Ako datoteka ne postoji kada je pronalazak pokrenut, on se kreira; ako postoji, skraćuje se. Naziv datoteke `` / dev / stdout '' i `` / dev / stderr '' se obrađuje posebno; oni se odnose na standardni izlaz i standardni izlaz greške, respektivno.

-print0 file

Istinito; poput -print0 ali pišete u datoteku kao -print.

-fprintf format datoteke

Istinito; poput -printf ali pišete u datoteku kao -print.

-ok command ;

Kao -exec, ali pitajte korisnika prvo (na standardnom ulazu); ako odgovor ne počne sa `y 'ili` Y', nemojte pokrenuti komandu, a vratiti false.

-print

Istinito; odštampajte pun naziv datoteke na standardnom izlazu, nakon čega sledi nova linija.

-print0

Istinito; štampati pun naziv datoteke na standardnom izlazu, a zatim nula znak. Ovo omogućava imena datoteka koja sadrže nove linije koje treba ispravno tumačiti od strane programa koji obrađuju find izlaz.

-printf format

Istinito; format štampanja na standardnom izlazu, tumačenje direktiva `\ 'bekap i`%'. Širina polja i preciznosti mogu se specificirati kao sa `printf 'C funkcijom. Za razliku od -print, -printf ne dodaje novu liniju na kraju stringa. Izbjeglice i direktive su:

\ a

Alarm zvono.

\ b

Backspace.

\ c

Zaustavite štampanje sa ovog formata odmah i isperite izlaz.

\ f

Feed feed.

\ n

Nova linija.

\ r

Povrat kočije.

\ t

Horizontalni tab.

\ v

Vertikalni tabulator.

\\

Dobra backslash (`\ ').

\ NNN

Karakter čiji je ASCII kôd NNN (oktalni).

Znak `\ 'praćen bilo kojim drugim karakterom tretira se kao običan karakter, tako da su oba odštampana.

%%

Znak dobrog procenta.

% a

Poslednje vreme pristupa datoteke u formatu koji je vratio funkcija C `ctime '.

% A k

Poslednje vreme pristupa datoteke u formatu koji je naveden od k , što je ili `@ 'ili direktiva za funkciju C` strftime'. Moguće vrednosti za k su navedene u nastavku; neki od njih možda neće biti dostupni na svim sistemima, zbog razlika u "strftime" između sistema.

@

sekundi od 1. januara 1970, 00:00 GMT.

Vremenska polja:

H

sat (00..23)

Ja

sat (01..12)

k

sat (0..23)

l

sat (1..12)

M

minut (00..59)

str

lokalni AM ili PM

r

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

S

drugi (00..61)

T

vreme, 24-satno (hh: mm: ss)

X

predstavljanje vremena locale (H: M: S)

Z

vremenska zona (npr. EDT), ili ništa ako vremenska zona nije moguća

Polja datuma:

a

Skraćeno ime dneva u danskom jeziku (Sun..Sat)

A

lokalno ime pune dnevne dane, varijabilna dužina (nedjelja..saturday)

b

skraćeni naziv lokalnog jezika (Jan..Dec)

B

lokalno ime celog meseca, promenljiva dužina (januar..decembar)

c

Datum i vreme lokalizacije (sub nov 04 12:02:33 EST 1989)

d

dan u mesecu (01..31)

D

datum (mm / dd / yy)

h

isto kao i b

j

dan u godini (001..366)

m

mjesec (01..12)

U

nedeljni broj godine sa nedeljom kao prvi dan u nedelji (00..53)

w

dan u nedelji (0..6)

W

nedeljni broj godine sa ponedjeljkom kao prvi dan u nedelji (00..53)

x

prikaz lokalnog datuma (mm / dd / yy)

y

poslednje dve cifre godine (00..99)

Y

godina (1970 ...)

% b

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

% c

Poslednje vrijeme promjene statusa datoteke u formatu koji je vratio funkcija C `ctime '.

% C k

Poslednje vrijeme promjene statusa datoteke u formatu koji je naveden od k , što je isto kao za% A.

% d

Dubina datoteke u stablu direktorija; 0 znači da je datoteka argument za komandnu liniju.

% f

Ime datoteke sa bilo kojim vodećim direktorijumom uklonjeno (samo poslednji element).

% F

Tip datotečnog sistema na kojem je datoteka uključena; ova vrijednost se može koristiti za -fstype.

% g

Ime grupe datoteke ili numerička ID grupa ako grupa nema ime.

% G

ID numeričke grupe datoteke.

% h

Vodeći direktorijumi imena fajla (sve osim poslednjeg elementa).

% H

Argument komandne linije pod kojim je pronađena datoteka.

% i

Broj inode datoteke (u decimalnom broju).

% k

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

% l

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

% m

Bitovi dozvole datoteke (u oktalnoj verziji).

% n

Broj teških linkova do datoteke.

% p

Ime datoteke.

% P

Ime datoteke sa nazivom argumenta komandne linije pod kojom je pronađeno uklonjeno.

% s

Veličina datoteke u bajtovima.

% t

Poslednje vrijeme modifikacije fajla u formatu koji je vratio funkcija C `ctime '.

% T k

Poslednje vrijeme modifikacije datoteke u formatu koji je naveden od k , što je isto kao i za% A.

% u

Korisničko ime datoteke ili numeričko korisničko ime ako korisnik nema ime.

% U

Brojčani korisnički ID datoteke.

Znak `% 'koji prati bilo koji drugi znak se odbacuje (ali se drugi znak štampa).

-prune

Ako -dept nije dat, tačno; ne spustite trenutni direktorijum.
Ako je dato, false; nema efekta.

-ls

Istinito; navesti trenutnu datoteku u formatu `ls -dils 'na standardnom izlazu. Broj blokova je 1K blokova, osim ako nije postavljena varijabla okruženja POSIXLY_CORRECT, u tom slučaju se koriste 512-bajtni blokovi.

Operatori

Navedeni po redosledu opadanja:

( expr )

Prednost sile.

! expr

Istina ako je expr neispravan.

-not expr

Isto kao ! expr .

expr1 expr2

I (implicitno); expr2 se ne procenjuje ako je expr1 lažan.

expr1 -a expr2

Isto kao expr1 expr2 .

expr1- i expr2

Isto kao expr1 expr2 .

expr1 -o expr2

Ili; expr2 se ne procenjuje ako je expr1 tačan.

expr1- ili expr2

Isto kao expr1 -o expr2 .

expr1 , expr2

List; i expr1 i expr2 se uvek procenjuju. Vrednost expr1 je odbačena; vrijednost liste je vrijednost expr2 .

Primjeri

pronađi / home-user Džo

Pronađite svaki fajl ispod direktorijuma / kuće u vlasništvu korisnika Joe.

pronađi / usr -name * stat

Pronađite svaku datoteku pod imenom / usr koja se završava u ".stat".

pronađi / var / spool -mtime +60

Pronađite svaku datoteku pod imenom / var / spool koja je izmenjena pre više od 60 dana.

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

Pronađite datoteke s nazivom core u ili ispod direktorijuma / tmp i izbrišite ih. Imajte na umu da će ovo raditi pogrešno ako postoje imena datoteka koja sadrže nove linije, pojedinačne ili dvostruke citate ili razmake.

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

Nađite datoteke nazvane jezgro u ili ispod direktorijuma / tmp i obrišite ih, obrađujte imena datoteka tako da imena datoteka ili direktorijuma koji sadrže pojedinačne ili dvostruke citate, razmake ili nove linije pravilno se obrađuju. -name test dolazi pre testa tipa, kako bi se izbjeglo da pozovete stat (2) na svakoj datoteci.

pronaći. -type f -exec datoteka '{}' \;

Pokreće `file 'na svakoj datoteci u ili ispod trenutnog direktorijuma. Obratite pažnju na to da su prtljažnice zatvorene u pojedinačnim cijenama kako bi ih zaštitili od tumačenja kao punktuacije ljepote. Tačka i tačka su na isti način zaštićena korišćenjem backslash-a, iako ';' moglo se koristiti iu tom slučaju.

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

Provjerite fajl sistem samo jednom, navodeći setuid datoteke i direktorije u /root/suid.txt i velike datoteke u /root/big.txt .

pronađite $ HOME -mtime 0

Potražite datoteke u vašem kućnom direktoriju koji su modifikovani u poslednjih 24 sata. Ova komanda radi ovako jer je vrijeme od kada je svaka poslednja izmjenjena datoteka podeljena na 24 sata i bilo koji ostatak je odbačen. To znači da se podudaraju -mtime

0 , fajl će morati imati modifikaciju u prošlosti koja je pre manje od 24 sata.

pronaći. -perm 664

Potražite datoteke koje imaju dozvolu za čitanje i pisanje za njihovog vlasnika i grupe, ali koje druge korisnike mogu čitati ali ne i pisati. Datoteke koje ispunjavaju ove kriterijume, ali imaju postavljene druge bitove dozvola (na primjer, ako neko može izvršiti datoteku) neće biti upareni.

pronaći. -perm -664

Tražite datoteke koje imaju dozvolu za čitanje i pisanje za njihovog vlasnika i grupe i koje drugi korisnici mogu čitati, bez obzira na prisustvo dodatnih bitova za dozvolu (na primjer izvršni bit). Ovo će odgovarati datotekama koja ima mod 0777, na primjer.

pronaći. -perm / 222

Potražite datoteke koje mogu pisati neko (njihov vlasnik, njihova grupa, ili bilo ko drugi).

pronaći. -perm / 220 pronađite. -perm / u + w, g + w naći. -perm / u = w, g = w

Sve tri ove naredbe rade istu stvar, ali prva koristi oktalnu reprezentaciju režima datoteka, a druga dva koriste simbolički oblik. Ove komande sve traže datoteke koje mogu pisati bilo njihov vlasnik ili njihova grupa. Datoteke ne moraju biti zapisane od strane vlasnika i grupe koji se moraju upariti; bilo će učiniti.

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

Obe ove naredbe rade istu stvar; potražite datoteke koje mogu pisati njihovi vlasnici i njihova grupa.

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

Ove dvije komande traže fajlove koji se mogu čitati za sve (-perm -444 ili -perm -a + r), imaju bar na set bitnih bitova (-perm / 222 ili -perm / a + w), ali se ne mogu izvršiti za bilo koga (! -perm / 111 i! -perm / a + x respektivno)

Važno: Koristite komandu čovjeka ( % čovjek ) da biste videli kako se na vašem računaru koristi komanda.