logo

Poiščite ukaz v Linuxu/Unixu s primeri

Ukaz find nam pomaga najti določeno datoteko v imeniku. Uporablja se za iskanje seznama datotek za različne pogoje, kot so dovoljenje, lastništvo uporabnika, sprememba, datum/čas, velikost in več.

V operacijskih sistemih, podobnih Unixu, in drugih operacijskih sistemih je ukaz find pripomoček ukazne vrstice, ki najde datoteke na podlagi nekaj uporabniško določenih formatov in bodisi natisne vse ujemajoče se ime poti objekta ali, če so zahtevana druga dejanja, izvede to dejanje na vse ujemajoče se predmete.

Iskanje začne z želene začetne lokacije in nato rekurzivno prečka imenike (vozlišča) hierarhične strukture (običajno drevesa). Ukaz find lahko išče in prečka različne sisteme datotečnih particij, ki pripadajo eni ali več napravam za shranjevanje v začetnem imeniku.

Oblika iskanja vsebuje vzorec za ujemanje z imenom datoteke ali časovni obseg za ujemanje s časom spreminjanja ali časom dostopa do datoteke. Ukaz find privzeto nudi seznam vsake datoteke v trenutnem delovnem imeniku. Vendar pa lahko uporabniki omejijo iskanje na želeno najvišjo raven ob začetnem imeniku.

Povezani programi za iskanje uporabljajo indeksirano zbirko podatkov datotek, pridobljeno iz ukaza fine, za hitrejšo tehniko iskanja celotnega datotečnega sistema po imenu.

Pripomoček za iskanje je privzeto priložen večini Linux distribucije , zato nam ni treba namestiti nobenega dodatnega paketa. To je eden najbolj bistvenih in uporabljenih ukazov Linux sistem.

 find 

Dve možnosti določata, kako naj find upošteva simbolne povezave. Privzeta narava ni nikoli slediti simbolnim povezavam. Zastavo, tj. -L , bo iskanje vodilo do iskanja simboličnih povezav. Zastavo, tj. -H , bo samo sledil simboličnim povezavam, medtem ko bo nadaljeval z argumenti ukazne vrstice. Zastavice so omenjene v standardu POSIX za ukaz find. Osnovna razširitev je zastavica, tj. -P , da izrecno onemogočite naslednjo simbolno povezavo.

Vsaj pot mora predvideti izraz. Ukaz find lahko interno razlaga nadomestne znake, ukaze pa je treba skrbno navajati, da upravljate globiranje lupine.

Komponente izraza so izolirane z mejo argumenta ukazne vrstice, ki je na splošno označena kot presledek v sintaksi lupine. Upoštevani so od leve proti desni strani. Vključujejo lahko logične komponente, kot sta ALI in IN, ter predikate (dejanja in filtri). GNU find vsebuje več drugih funkcij, ki jih POSIX ne omenja.

Za določitev imenika se uporabljajo naslednji simboli:

(.) : Za trenutno ime imenika

(/) : Za korenski imenik

Kratka zgodovina ukaza Find

Ukaz find se je pojavil v različici 5 Unixa kot element Programer's Workbench projekt in ga je določil Dick Haight s cpio, ki sta bila razvita za skupno uporabo.

Prvotno je implementacijo GNU ukaza find določil Eric Decker . Kasneje ga je razvil David MacKenzie, Tim Wood , in Jay Plett . Poleg tega je bil ukaz find prenesen v OS IBM i.

koliko tehta kat timpf

Predikati

Široko uporabljeni primarni so:

    - vzorec imena:Preveri, ali je ime datoteke enako danemu vzorcu shell-glob ali ne.- vrsta vrste:Preveri, ali je datoteka navedene vrste.-tisk:Vedno daje pravo vrednost. Natisne trenutno ime datoteke in novo vrstico v stdout.-print0:Vedno daje pravo vrednost. V stdout natisne trenutno ime datoteke in ničelni znak. POSIX ga ne potrebuje.-exec program [argument ...];:Vedno daje pravo vrednost. Izvede program s fiksnimi danimi argumenti in trenutno potjo do datoteke.-exec program [argument ...] { } +:Vedno daje pravo vrednost. Izvaja program s fiksno podanimi argumenti in čim več potmi. Za skoraj vsako izvedbo druge pojavitve {} pomenijo dodatne kopije danega imena (vidika, ki ga POSIX ne potrebuje).-ok program [argument ...];:Je enak kot -exec, vendar bo vrnil false ali true, če program poda 0.

Poiščite privzete vrednosti za implementacijo -print v primeru, da so pogoji resnični, če izraz ne uporablja nobenega od -ok, -exec, -print ali -print0.

Operaterji

Operatorji izboljšajo ukazne izraze za iskanje. Omenjeni so po padajočem vrstnem redu:

    ( izraz ):Ta operater lahko vsili prednost.! izraz:Če izraz vrne false, vrne true.
  • izraz1 izraz2 (ali izraz1 -a izraz2 : IN. izraz2 ni ovrednoten, če je izraz1 napačen.
  • izraz1 -o izraz2 : ALI. izraz2 ni ovrednoten, če je izraz1 resničen.

Primeri ukaza za iskanje

Oglejmo si naslednje primere ukaza find:

Poiščite datoteke po imenu

Iščemo lahko po vseh datotekah, ki se končajo s pripono '.txt'. Če želite to narediti, izvedite spodnji ukaz:

 find . -name '*.txt' 

Zgornji ukaz bo prikazal seznam vseh besedilnih datotek iz trenutnega delovnega imenika. Razmislite o spodnjem rezultatu:

kako inicializirati matriko v Javi
Linux Iskanje

Iz zgornjega izhoda so vse datoteke s pripono '.txt' navedene z ukazom find.

Iskanje datotek po vrsti

Parameter '-type' se uporablja za določitev vrste datoteke.

Nekatere vrste datotek so naslednje:

  • f: običajna datoteka
  • d: imenik
  • l: simbolne povezave
  • c: znakovne naprave
  • b: blok naprave

Razmislite o spodnjem ukazu:

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

Zgornji ukaz bo prikazal seznam vseh imenikov s pripono '.bak'. Razmislite o spodnjem rezultatu:

Linux Iskanje

Iz zgornjega izhoda je ukaz 'najdi . -type d -name '*.bak' prikazuje vse imenike, ki se končajo z '.bak'.

Poiščite novejše datoteke

Parameter '-newer' pomaga pri iskanju datotek, ki so novejše od omenjene datoteke. Razmislite o spodnjem ukazu:

 find . -newer msg.txt 

Zgornji ukaz bo prikazal vse datoteke, ki so novejše od ' msg.txt' iz trenutnega delovnega imenika. Razmislite o spodnjem rezultatu:

Linux Iskanje

Iz zgornjega izhoda so vse prikazane datoteke novejše od datoteke 'msg.txt'.

Poiščite in izbrišite datoteko

Možnost '-delete' se uporablja za brisanje določene datoteke. Pri uporabi tega ukaza moramo biti zelo previdni, ker ni možnosti razveljavitve, če se enkrat izvede. Razmislite o spodnjem ukazu:

 find . -name Demo.txt -delete 

Zgornji ukaz bo izbrisal datoteko 'Demo.txt' iz trenutnega delovnega imenika. Razmislite o spodnjem rezultatu:

Linux Iskanje

Poiščite imenik

Možnost ' type -d' se uporablja za iskanje imenika. Razmislite o spodnjem ukazu:

 find . type -depth -name Newdirectory 

Zgornji ukaz bo našel lokacijo 'Newdirectory'. Razmislite o spodnjem rezultatu:

c++ razdelitev nizov
Linux Iskanje

Poiščite datoteke po času spreminjanja

Za iskanje datotek po spremembi se uporablja možnost '-mtime', ki ji sledi število dni. Število dni je lahko pozitivno ali negativno. Negativna vrednost bo uporabljena za manj kot -1 se uporablja za zadnji dan, in podobno bo +1 našel datoteko za več kot en dan nazaj. Razmislite o spodnjem ukazu:

 find ./Newdirectory -mtime -1 

Zgornji ukaz bo našel datoteke, ki so bile spremenjene v zadnjem dnevu. Razmislite o spodnjem rezultatu:

Linux Iskanje

Poiščite datoteke z dovoljenjem

Možnost '-perm' se uporablja za iskanje datotek z dovoljenjem. Izvedite ukaz find z možnostjo '-perm' in posredujte zahtevano vrednost. Razmislite o spodnjem ukazu:

 find ./ -perm 777 

Zgornji ukaz bo prikazal seznam datotek iz določenega imenika, ki jih lahko vsakdo bere, piše in izvaja.

Poiščite in zamenjajte datoteke

Za iskanje in zamenjavo datotek moramo združiti ukaz find z ukazom sed. Za delo z datotekami uporabite možnost '-exec' z ukazom find. Razmislite o spodnjem ukazu:

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

iz zgornjega ukaza bo določen pojav zamenjan. Razmislite o spodnjem rezultatu:

Linux Iskanje

Poiščite besedilo v več datotekah

Lahko naredimo drugo kombinacijo ukaza find z ukazom grep, da poiščemo besedilo iz različnih datotek. Razmislite o spodnjem ukazu:

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

Zgornji ukaz bo našel vrstice, ki vsebujejo besedilo 'demo' iz vseh besedilnih datotek v imeniku 'Newdirectory.' Razmislite o spodnjem rezultatu:

Linux Iskanje

Iz zgornjega izhoda lahko vidimo, da so vrstice z besedilom 'demo' prikazane.

Preiščite vsak imenik

 $ find / -name file1 -type f -print 

Zgornji ukaz najde vse imenike za običajno datoteko z naslovom file1 in jo natisne na zaslon. Na splošno ni dobro iskati datotek na ta način. Lahko traja kar nekaj časa. Torej, najbolje je omeniti imenik. Nekaj ​​operacijskih sistemov lahko pripne datotečne sisteme (dinamične), ki niso naklonjeni ukazu find. Bolj zapletena imena datotek, ki vsebujejo znake, edinstvene za lupino, bodo morda morala biti zaprta v enojnih narekovajih.