Linux i Unix naredba pronaći izvršava traženje datoteka u hijerarhiji direktorija.
Sintaksa za pronaći naredba:
pronaći put … izraz
Opis
Ova ručna stranica dokumentira GNU verziju pronaći , Naredba pronaći pretražuje stablo direktorija ukorijenjeno u svakom datom nazivu, vrednovanjem navedenog izraza s lijeva na desno, u skladu s pravilima prednosti (vidi odjeljak "Operatori" u daljnjem tekstu), sve dok se ishod ne zna; drugim riječima, lijeva strana je lažna i operacija vrijedi za ili , u kojem trenutku pronaći prelazi na sljedeći naziv datoteke.
Prvi argument koji počinje s:
- -
- ( ili ),
- !
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 nema izraza, izraz -print koristi se.
pronaći naredba 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 druge radnje -obrezati , onda -print se 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, -met, -min, -metil, -min, i -mtime ) od početka danas, a ne prije 24 sata. |
-dubina | Obradite sadržaj svake mape prije samog direktorija. |
-slijediti | Dereference simboličke veze. podrazumijeva -noleaf . |
-Pomozite ili --Pomozite | Ispiši sažetak upotrebe naredbenog retka pronaći i izlaz. |
-maxdepth broj | Spušta najviše razine razina (ne-negativni cijeli broj) direktorija ispod argumenata naredbenog retka. Izraz -maxdepth 0 znači samo primijeniti testove i radnje na 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 procesiranje svih datoteka, osim argumenata naredbenog retka. |
-mount | Ne spuštajte direktorije na druge datotečne sustave. Alternativno ime za -xdev , za kompatibilnost s nekim drugim verzijama pronaći . |
-noleaf | Nemojte optimizirati pretpostavljajući da imenici sadrže 2 manje poddirektorija od njihovog broja čvrste veze. * |
-verzija ili --verzija | Ispiši pronaći broj verzije i izlaz. |
-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, njezini poddirektori (ako ih ima) imaju svaki. unos povezan s tim imenikom.
Kada pronaći ispituje direktorij, nakon što je stigao dva manje poddirektorija od brojeva veze u direktoriju, zna da ostali unosi u direktoriju nisu direktori ( list datoteke 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 br. |
-n | Za manje od br. |
n | Za točno br. |
-amin n | Zadnji je pristup dosjeu n prije nekoliko minuta. |
- više datoteka | Datoteka je zadnji put pristupila nedavno datoteka je izmijenjen. - pogođen je novi - slijedi samo ako - slijedi prije - novi tekst na naredbenom retku. |
- vrijeme n | Zadnji je pristup dosjeu n Prije 24 sata. |
-cmin n | Status datoteke zadnji je promijenjen n prije nekoliko minuta. |
-cnewer datoteka | Status datoteke zadnji je put promijenjen nego je datoteka izmijenjena.- cnewer pod utjecajem -slijediti samo ako -slijediti dolazi prije -cnewer na naredbenom retku. |
- vrijeme n | Status datoteke zadnji je 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 | Datoteka je numerička grupa ID 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 fo * i F ?? podudaraju se s imenima datoteka foo , FOO , foo , foo , itd. |
-inum n | Datoteka ima broj inode n . |
-ipat obrazac | Kao -staza , ali utakmica je neosjetljiva na slučajeve. |
-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 se ne liječe / ili . posebno. |
-mmin n | Podaci o datumu posljednje su izmijenjeni n prije nekoliko minuta. |
- vrijeme n | Podaci o datumu posljednje su izmijenjeni n Prije 24 sata. |
-name obrazac | Baza imena datoteke (put s vodećim direktorijima uklonjen) odgovara obrascu ljuske. Metakarakteri (*, ?, i ) ne odgovaraju a . na početku naziva baze. Da biste ignorirali direktorij i datoteke ispod nje, upotrijebite -obrezati ; vidjeti primjer u opisu -staza . |
-newer datoteka | Datoteka je nedavno modificirana datoteka , Izraz -newer pod utjecajem -slijediti samo ako -slijediti dolazi prije -newer 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 shell patternu uzorak , Metakarakteri se 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 -obrezati umjesto provjere svake datoteke na stablu. Na primjer, preskočite direktorij src / emacs i sve datoteke i direktorije ispod nje i ispisati imena drugih pronađenih datoteka, učinite nešto ovako:pronaći . -path './src/emacs' -prune -o -print |
-perm način | Datoteke su dopuštene način (oktalno ili simbolično). Simbolski modovi koriste način 0 kao polaznu točku. |
-perm-modus | Svi dopušteni bitovi način su postavljene za datoteku. |
-perm + način | Bilo koji od dopuštenih bitova način su postavljene za datoteku. |
-regex obrazac | Naziv datoteke odgovara regularnom izrazu uzorak , Ovo je utakmica na cijelom putu, a ne na pretraživanju. Na primjer, da biste podudarali datoteku s imenom ./fubar3, možete koristiti regularni izraz .*bar. ili *. B. * 3, ali ne b. * r3. |
-size n bckw | Datoteka koristi n jedinica prostora. Jedinice su blokovi od 512 bajta po defaultu ili ako b slijedi n , bajtova ako c slijedi n , kilobajta ako k slijedi n , ili 2-byte riječi ako 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 | Zadnji je pristup dosjeu n dana nakon što je zadnji put promijenjen status. |
upotrijebiti uname | Datoteka je u vlasništvu korisnika uname (dopušteno numeričko korisničko ime). |
-xtype c | Isto kao -tip osim ako datoteka nije simbolična veza. Za simboličke veze: ako -slijediti nije dana, istinito ako je datoteka veza na datoteku vrste c ; ako -slijediti je dano, istina ako c l. Drugim riječima, za simboličke veze, -xtype provjerava vrstu datoteke koju -tip ne provjerava. |
akcije
-exec naredba ;
Izvršiti naredba ; true ako je status 0 vraćen. Svi sljedeći argumentipronaći smatraju se argumentima zapovjedništvu sve dok argument koji se ne sastoji od ";"; se susreće. Niz {{} zamjenjuje se trenutnim nazivom datoteke koji se obrađuje svugdje gdje se pojavljuje u argumentima naredbi, a ne samo u argumentima gdje je sam, kao u nekim verzijamapronaći, 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 datoteka
Pravi; poput -ls, ali pisati datoteka poput -fprint.
-fprint datoteka
Pravi; ispisati cijeli naziv datoteke u datoteku datoteka , Ako datoteka ne postoji kadapronaći je pokrenut, stvoren je; 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 datoteka
Pravi; poput -print0, ali pisati na datoteka poput -fprint.
-fprintf datoteka format
Pravi; poput -printf ali pisati datoteka poput -fprint.
-u redu 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.
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đujupronaći izlaz.
-printf format
Pravi; otisak format na standardni izlaz, tumačenje ` 'bijega 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 koji je odredio k , što 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 nije moguće utvrditi vremensku zonu
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
Datoteka posljednjeg statusa mijenja vrijeme u formatu koji je odredio k , što je isto kao i% 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
Posljednje vrijeme izmjene datoteke u formatu koji je odredio k , što je isto kao i% 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. Navedeni redoslijedom smanjenja prednosti: ( Expr ) Prednost snage. ! Expr Istina, ako Expr je lažan. -ne Expr Isto kao ! Expr . expr1 expr2 I (implicirano); expr2 ne procjenjuje se ako expr1 je lažan. expr1 -a expr2 Isto kao expr1 expr2 . expr1 -i expr2 Isto kao expr1 expr2 . expr1 -o expr2 Ili; expr2 ne procjenjuje se ako expr1 je istina. expr1 -ili expr2 Isto kao expr1 -o expr2 . expr1 , expr2 Popis; oba expr1 i expr2 uvijek se vrednuju. Vrijednost expr1 odbacuje; vrijednost popisa je vrijednost od expr2 . 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
Pronalaženje nazvanih datotekasrž 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
Pronalaženje nazvanih datotekasrž u ili ispod direktorija/ tmp i izbrisati ih, obrađuju nazive datoteka na takav način da se imena datoteka ili imenika koji sadrže jednokratne ili dvostruke navodnike, razmake ili nove linije ispravno obrađuju.-Ime test dolazi prije-tip test kako ne bi trebali zvatistat (2) na svakoj datoteci. 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. / (-perm -4000 -fprintf /root/suid.txt '% # m% u% p n' ), (-size + 100M -fprintf /root/big.txt '% -10s% p n' )
Preusmjerite datotečni sustav samo jednom, uvrstite setuid datoteke i direktorije/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-mtime 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 pronaći . -perm / u + w, g + w pronaći . -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 . -perma -220 pronać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 pronać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: Koristiti čovjek naredba ( % čovjek ) kako biste vidjeli kako se naredba koristi na vašem računalu.operatori
Primjeri