logo

Pronađite naredbu u Linuxu/Unixu s primjerima

Naredba find nam pomaže pronaći određenu datoteku unutar direktorija. Koristi se za pronalaženje popisa datoteka za različite uvjete kao što su dopuštenje, vlasništvo korisnika, izmjena, datum/vrijeme, veličina i više.

U operacijskim sustavima sličnim Unixu i drugim operativnim sustavima, naredba find je uslužni program naredbenog retka koji pronalazi datoteke na temelju nekoliko formata koje je odredio korisnik i ili ispisuje sve podudarne nazive putanje objekta ili, ako se traže druge radnje, implementira tu radnju na sve podudarne objekte.

Započinje pretraživanje od željene početne lokacije i, nakon toga, rekurzivno prolazi kroz direktorije (čvorove) hijerarhijske strukture (općenito stabla). Naredba find može pretraživati ​​i prelaziti iz različitih sustava particija datoteka koji pripadaju jednom ili više uređaja za pohranu u početnom direktoriju.

Format pretraživanja sadrži obrazac za podudaranje s nazivom datoteke ili vremenski raspon za podudaranje s vremenom izmjene ili vremenom pristupa datoteci. Naredba find prema zadanim postavkama daje popis svake datoteke u trenutnom radnom direktoriju. Međutim, korisnici mogu ograničiti pretraživanje na željenu maksimalnu razinu nakon početnog direktorija.

Pridruženi programi za lociranje primjenjuju indeksiranu bazu podataka datoteka dobivenu iz naredbe fine kako bi pružili bržu tehniku ​​pretraživanja cijelog sustava datoteka po imenu.

Uslužni program za traženje standardno dolazi s većinom Linux distribucije , tako da ne moramo instalirati nikakav dodatni paket. To je jedna od najvažnijih i najkorištenijih naredbi Linux sustav.

 find 

Dvije opcije određuju kako find treba uzeti u obzir simboličke veze. Zadana priroda nikada nije slijediti simboličke veze. Zastava, tj. -L , dovest će do traženja simboličkih veza. Zastava, tj. -H , samo će slijediti simboličke veze nastavljajući s argumentima naredbenog retka. Zastavice se spominju u POSIX standardu za naredbu pronalaženja. Osnovno proširenje je zastavica, tj. -P , da izričito onemogućite sljedeću simboličku vezu.

Barem put mora predvidjeti izraz. Naredba find može interno tumačiti zamjenske znakove, a naredbe se moraju pažljivo staviti u navodnike da bi se upravljalo globiranjem ljuske.

Komponente izraza izolirane su granicom argumenata naredbenog retka, općenito označenom kao razmak unutar sintakse ljuske. Razmatraju se od lijeve strane prema desnoj strani. Mogu uključivati ​​logičke komponente kao što su OR i AND, kao i predikate (radnje i filtre). GNU find sadrži nekoliko drugih značajki koje POSIX ne spominje.

Za određivanje imenika koriste se sljedeći simboli:

(.) : Za trenutni naziv direktorija

(/) : Za korijenski direktorij

Kratka povijest naredbe Find

Naredba find pojavila se u verziji 5 Unixa kao element Programer's Workbench projekt i specificirao ga je Dick Haight s cpio, koji su razvijeni da se koriste zajedno.

Izvorno je GNU implementacija naredbe find specificirana od strane Eric Decker . Kasnije su ga razvili David MacKenzie, Tim Wood , i Jay Plett . Također, naredba find je prenesena na IBM i OS.

python ispis na 2 decimalna mjesta

Predikati

Naširoko korišteni primarni su:

    - uzorak naziva:Provjerava je li naziv datoteke isti kao dani shell-glob uzorak ili nije.-vrsta tipa:Provjerava je li datoteka navedene vrste.-ispis:Uvijek daje pravu vrijednost. Ispisuje trenutni naziv datoteke i novi redak u stdout.-print0:Uvijek daje pravu vrijednost. Ispisuje trenutni naziv datoteke i null znak u stdout. Nije potreban POSIX-u.-exec program [argument ...];:Uvijek daje pravu vrijednost. Izvršava program s fiksnim zadanim argumentima i trenutnom putanjom datoteke.-exec program [argument ...] { } +:Uvijek daje pravu vrijednost. Izvršava program s fiksno zadanim argumentima i što više puta. Za gotovo svaku implementaciju, druge pojave {} znače dodatne kopije zadanog imena (aspekt nije potreban POSIX-u).-ok program [argument ...];:To je isto kao -exec, ali će vratiti false ili true ako program da 0.

Pronađite zadane vrijednosti implementacije -print u slučaju da su uvjeti istiniti ako izraz ne koristi ništa od -ok, -exec, -print ili -print0.

Operatori

Operatori poboljšavaju izraze naredbe find. Spominju se prema silaznom redoslijedu:

    ( izraz ):Ovaj operator može forsirati prvenstvo.! izraz:Ako izraz vrati false, vraća true.
  • izraz1 izraz2 (ili izraz1 -a izraz2 : I. izraz2 se ne procjenjuje ako je izraz1 lažan.
  • izraz1 -o izraz2 : ILI. izraz2 se ne procjenjuje ako je izraz1 istinit.

Primjeri naredbe find

Pogledajmo sljedeće primjere naredbe find:

Pronađite datoteke prema nazivu

Možemo pretraživati ​​sve datoteke koje završavaju ekstenzijom '.txt'. Da biste to učinili, izvršite naredbu u nastavku:

 find . -name '*.txt' 

Gornja naredba izlistat će sve tekstualne datoteke iz trenutnog radnog direktorija. Razmotrite donji izlaz:

Linux Find

Iz gornjeg izlaza, sve datoteke s ekstenzijom '.txt' navedene su uz naredbu find.

Traženje datoteka prema vrsti

Parametar '-type' koristi se za određivanje vrste datoteke.

Neke od vrsta datoteka su sljedeće:

linux kako preimenovati direktorij
  • f: obična datoteka
  • d: imenik
  • l: simboličke veze
  • c: znakovni uređaji
  • b: blok uređaji

Razmotrite naredbu u nastavku:

 find . -type d -name '*.bak' 

Gornja naredba izlistat će sve direktorije s ekstenzijom '.bak'. Razmotrite donji izlaz:

Linux Find

Iz gornjeg izlaza, naredba 'find . -type d -name '*.bak' prikazuje sve direktorije koji završavaju s '.bak'.

Pronađite novije datoteke

Parametar '-newer' pomaže u pretraživanju datoteka koje su novije od navedene datoteke. Razmotrite naredbu u nastavku:

 find . -newer msg.txt 

Gornja naredba će prikazati sve datoteke koje su novije od ' msg.txt' iz trenutnog radnog direktorija. Razmotrite donji izlaz:

Linux Find

Iz gornjeg rezultata, sve prikazane datoteke su novije od datoteke 'msg.txt'.

Pronađite i izbrišite datoteku

Opcija '-delete' koristi se za brisanje određene datoteke. Moramo biti vrlo oprezni pri korištenju ove naredbe jer ne postoji mogućnost poništavanja ako se jednom izvrši. Razmotrite naredbu u nastavku:

 find . -name Demo.txt -delete 

Gornja naredba će izbrisati datoteku 'Demo.txt' iz trenutnog radnog direktorija. Razmotrite donji izlaz:

Linux Find

Pronađite imenik

Opcija ' type -d' koristi se za pronalaženje imenika. Razmotrite naredbu u nastavku:

 find . type -depth -name Newdirectory 

Gornja naredba će pronaći lokaciju 'Newdirectory'. Razmotrite donji izlaz:

Linux Find

Pronađite datoteke prema vremenu izmjene

Opcija '-mtime', nakon koje slijedi broj dana, koristi se za pronalaženje datoteka prema modifikacijama. Broj dana može biti pozitivan ili negativan. Negativna vrijednost koristit će se za manje od, kao što se -1 koristi za zadnji dan, i slično, +1 će pronaći datoteku za više od jednog dana. Razmotrite naredbu u nastavku:

 find ./Newdirectory -mtime -1 

Gornja naredba će pronaći datoteke koje su izmijenjene u posljednjem danu. Razmotrite donji izlaz:

Linux Find

Pronađite datoteke prema dopuštenju

Opcija '-perm' koristi se za traženje datoteka prema dopuštenju. Izvršite naredbu find s opcijom '-perm' i proslijedite potrebnu vrijednost. Razmotrite naredbu u nastavku:

niz za char java
 find ./ -perm 777 

Gornja naredba izlistat će datoteke iz navedenog direktorija koje svatko može čitati, pisati i izvršavati.

Pronađite i zamijenite datoteke

Da bismo pronašli i zamijenili datoteke, moramo kombinirati naredbu find s naredbom sed. Za rad s datotekama koristite opciju '-exec' s naredbom find. Razmotrite naredbu u nastavku:

 find ./Newdirectory -type f -exec sed -i 's/find/replace/g' {} ; 

iz gornje naredbe, navedena pojava će biti zamijenjena. Razmotrite donji izlaz:

Linux Find

Pronađite tekst unutar više datoteka

Možemo napraviti drugu kombinaciju naredbe find s naredbom grep kako bismo pronašli tekst iz raznih datoteka. Razmotrite naredbu u nastavku:

 find ./Newdirectory -type f -name '*.txt' -exec grep 'demo' {} ; 

Gornja naredba će pronaći retke koji sadrže tekst 'demo' iz svih tekstualnih datoteka unutar direktorija 'Newdirectory.' Razmotrite donji izlaz:

Linux Find

Iz gornjeg izlaza možemo vidjeti da su prikazani reci s tekstom 'demo'.

Pretražite svaki direktorij

 $ find / -name file1 -type f -print 

Gornja naredba pronalazi sve direktorije za običnu datoteku čiji je naslov file1 i ispisuje je na ekranu. Općenito, nije dobra ideja pretraživati ​​datoteke na ovaj način. To može potrajati dosta vremena. Dakle, najbolje je spomenuti imenik. Neki operativni sustavi mogu montirati datotečne sustave (dinamički) koji nisu pogodni za naredbu find. Složeniji nazivi datoteka koji sadrže znakove jedinstvene za ljusku možda će morati biti zatvoreni jednostrukim navodnicima.