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:
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:
- 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
- Pronađite datoteke prema vrsti
- Pronađite novije datoteke
- Pronađite i izbrišite datoteku
- Pronađite imenik
- Pronađite datoteke prema vremenu izmjene
- Pronađite datoteke prema dopuštenju
- Pronađite i zamijenite datoteke
- Pronađite tekst unutar više datoteka
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:
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:
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:
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:
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:
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:
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:
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:
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.