Skip to main content

Korištenje Linux i Unix Command pronaći

Pipes, Grep, Sort Commands: Linux Tutorial 9 (Lipanj 2025)

Pipes, Grep, Sort Commands: Linux Tutorial 9 (Lipanj 2025)
Anonim

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.

-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đ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.

operatori

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 .

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

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.