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:
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:
- 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
- Poiščite datoteke po vrsti
- Poiščite novejše datoteke
- Poiščite in izbrišite datoteko
- Poiščite imenik
- Poiščite datoteke po času spreminjanja
- Poiščite datoteke z dovoljenjem
- Poiščite in zamenjajte datoteke
- Poiščite besedilo v več datotekah
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
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:
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:
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:
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
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:
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:
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:
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.