logo

Nájdite príkaz v systéme Linux / Unix s príkladmi

Príkaz find nám pomáha nájsť konkrétny súbor v adresári. Používa sa na nájdenie zoznamu súborov pre rôzne podmienky, ako je povolenie, vlastníctvo používateľa, úprava, dátum/čas, veľkosť a ďalšie.

V operačných systémoch podobných Unixu a iných operačných systémoch je príkaz find pomôcka príkazového riadka, ktorá nájde súbory na základe niekoľkých formátov špecifikovaných používateľom a buď vytlačí všetky zhodné názvy cesty k objektu, alebo ak sú požadované iné akcie, implementuje túto akciu na všetky zhodné objekty.

Spustí vyhľadávanie od požadovaného počiatočného miesta a potom rekurzívne prechádza adresármi (uzlami) hierarchickej štruktúry (vo všeobecnosti stromu). Príkaz find môže vyhľadávať a prechádzať z rôznych systémov súborových oddielov patriacich jednému alebo viacerým úložným zariadeniam v počiatočnom adresári.

Formát vyhľadávania obsahuje vzor na porovnávanie s názvom súboru alebo časový rozsah na porovnávanie s časom úpravy alebo času prístupu k súboru. Príkaz find štandardne poskytuje zoznam všetkých súborov v aktuálnom pracovnom adresári. Používatelia však môžu obmedziť vyhľadávanie na požadovanú maximálnu úroveň v počiatočnom adresári.

Pridružené lokalizačné programy aplikujú databázu indexovaných súborov získanú z príkazu fine, aby poskytli rýchlejšiu techniku ​​prehľadávania celého súborového systému podľa názvu.

Pomôcka na vyhľadávanie sa štandardne dodáva s väčšinou Linuxové distribúcie , takže nemusíme inštalovať žiadny ďalší balík. Je to jeden z najdôležitejších a najpoužívanejších príkazov Linux systém.

 find 

Tieto dve možnosti určujú, ako by malo vyhľadávanie zvážiť symbolické odkazy. Predvolenou povahou je nikdy neusilovať sa o symbolické odkazy. Vlajka, t.j. -L , bude viesť nájsť sledovať symbolické odkazy. Vlajka, t.j. -H , bude sledovať iba symbolické odkazy a zároveň pokračovať v argumentoch príkazového riadku. Príznaky sú uvedené v štandarde POSIX pre príkaz find. Základným rozšírením je vlajka, t.j. -P , aby ste explicitne zakázali nasledujúci symbolický odkaz.

Aspoň cesta musí predvídať výraz. Príkaz find môže interne interpretovať zástupné znaky a príkazy musia byť starostlivo citované, aby bolo možné spravovať globovanie shellu.

Komponenty výrazu sú izolované hranicou argumentov príkazového riadka, ktorá je v syntaxi shellu všeobecne označená ako medzera. Zvažujú sa z ľavej strany na pravú. Môžu zahŕňať logické komponenty ako OR a AND, ako aj predikáty (akcie a filtre). GNU find obsahuje niekoľko ďalších funkcií, ktoré POSIX nespomína.

Na určenie adresára sa používajú nasledujúce symboly:

(.) : Pre názov aktuálneho adresára

(/) : Pre koreňový adresár

Stručná história príkazu Nájsť

Príkaz find sa vyskytol vo verzii 5 Unix ako prvok súboru Programátorský pracovný stôl projektu a bol špecifikovaný podľa Dick Haight s cpio, ktoré boli vyvinuté na spoločné používanie.

Pôvodne bola implementácia GNU príkazu find špecifikovaná pomocou Eric Decker . Neskôr bol vyvinutý o David MacKenzie, Tim Wood a Jay Plett . Príkaz find bol tiež prenesený do operačného systému IBM i.

java čítanie csv

Predikáty

Široko používané primárne sú:

    - vzor mena:Skontroluje, či je názov súboru rovnaký ako daný vzor shell-glob alebo nie.- typ typu:Skontroluje, či je súbor poskytnutého typu.-tlač:Vždy dáva skutočnú hodnotu. Vytlačí aktuálny názov súboru a nový riadok na štandardný riadok.-tlač 0:Vždy dáva skutočnú hodnotu. Vytlačí aktuálny názov súboru a nulový znak na stdout. Nepotrebuje POSIX.-exec program [argument ...];:Vždy dáva skutočnú hodnotu. Spustí program s pevne danými argumentmi a aktuálnou cestou k súboru.-exec program [argument ...] { } +:Vždy dáva skutočnú hodnotu. Vykoná program s pevne danými argumentmi a s čo najväčším počtom ciest. Pre takmer každú implementáciu iné výskyty {} znamenajú ďalšie kópie daného mena (aspekt, ktorý POSIX nepotrebuje).-ok program [argument ...];:Je to rovnaké ako -exec, ale vráti hodnotu false alebo true, ak program dá 0.

Nájdite predvolené hodnoty implementácie -print v prípade, že sú podmienky splnené, ak výraz nepoužíva žiadne z -ok, -exec, -print alebo -print0.

javascriptové operátory

Operátori

Operátory vylepšujú výrazy príkazu find. Sú uvedené v zostupnom poradí:

    (expr):Tento operátor si môže vynútiť prednosť.! expr:Ak expr vráti hodnotu false, vráti hodnotu true.
  • výraz1 výraz2 (alebo výraz1 -a výraz2: AND. výraz 2 sa nevyhodnotí, ak je výraz1 nepravdivý.
  • expr1 -o expr2 : ALEBO. výraz expr2 sa nevyhodnotí, ak je výraz výraz1 pravdivý.

Príklady príkazu find

Pozrime sa na nasledujúce príklady príkazu find:

Nájdite súbory podľa názvu

Môžeme prehľadávať všetky súbory končiace príponou '.txt.' Ak to chcete urobiť, vykonajte nasledujúci príkaz:

 find . -name '*.txt' 

Vyššie uvedený príkaz zobrazí zoznam všetkých textových súborov z aktuálneho pracovného adresára. Zvážte nasledujúci výstup:

Linux Find

Z vyššie uvedeného výstupu sú všetky súbory s príponou '.txt' uvedené s príkazom find.

Hľadanie súborov podľa typu

Parameter '-type' sa používa na určenie typu súboru.

Niektoré typy súborov sú nasledovné:

  • f: bežný súbor
  • d: adresár
  • l: symbolické odkazy
  • c: znakové zariadenia
  • b: blokové zariadenia

Zvážte nasledujúci príkaz:

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

Vyššie uvedený príkaz zobrazí zoznam všetkých adresárov s príponou '.bak'. Zvážte nasledujúci výstup:

Linux Find

Z vyššie uvedeného výstupu príkaz 'find . -type d -name '*.bak' zobrazuje všetky adresáre končiace na '.bak'.

Nájdite novšie súbory

Parameter '-newer' pomáha pri vyhľadávaní súborov, ktoré sú novšie ako spomínaný súbor. Zvážte nasledujúci príkaz:

 find . -newer msg.txt 

Vyššie uvedený príkaz zobrazí všetky súbory, ktoré sú novšie ako 'msg.txt' z aktuálneho pracovného adresára. Zvážte nasledujúci výstup:

Linux Find

Z vyššie uvedeného výstupu sú všetky zobrazené súbory novšie ako súbor 'msg.txt'.

nginx

Nájdite a odstráňte súbor

Voľba '-delete' sa používa na odstránenie konkrétneho súboru. Pri používaní tohto príkazu musíme byť veľmi opatrní, pretože ak je už raz vykonaný, neexistuje možnosť vrátiť späť. Zvážte nasledujúci príkaz:

 find . -name Demo.txt -delete 

Vyššie uvedený príkaz vymaže súbor 'Demo.txt' z aktuálneho pracovného adresára. Zvážte nasledujúci výstup:

Linux Find

Nájdite adresár

Voľba 'type -d' sa používa na nájdenie adresára. Zvážte nasledujúci príkaz:

 find . type -depth -name Newdirectory 

Vyššie uvedený príkaz nájde umiestnenie 'Newdirectory'. Zvážte nasledujúci výstup:

Linux Find

Nájdite súbory podľa času úpravy

Voľba '-mtime', za ktorou nasleduje počet dní, sa používa na nájdenie súborov úpravou. Počet dní môže byť kladný alebo záporný. Záporná hodnota sa použije pre menej ako -1 sa používa pre posledný deň a podobne +1 nájde súbor spred viac ako jedného dňa. Zvážte nasledujúci príkaz:

 find ./Newdirectory -mtime -1 

Vyššie uvedený príkaz nájde súbory, ktoré boli zmenené za posledný deň. Zvážte nasledujúci výstup:

Linux Find

Nájdite súbory podľa povolenia

Možnosť '-perm' sa používa na vyhľadanie súborov podľa povolenia. Vykonajte príkaz find s voľbou '-perm' a odovzdajte požadovanú hodnotu. Zvážte nasledujúci príkaz:

 find ./ -perm 777 

Vyššie uvedený príkaz zobrazí zoznam súborov zo zadaného adresára, ktoré môže každý čítať, zapisovať a spúšťať.

Nájsť a nahradiť súbory

Aby sme našli a nahradili súbory, musíme skombinovať príkaz find s príkazom sed. Ak chcete pracovať so súbormi, použite voľbu '-exec' s príkazom find. Zvážte nasledujúci príkaz:

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

z vyššie uvedeného príkazu bude zadaný výskyt nahradený. Zvážte nasledujúci výstup:

Linux Find

Nájdite text vo viacerých súboroch

Môžeme urobiť ďalšiu kombináciu príkazu find s príkazom grep, aby sme našli text z rôznych súborov. Zvážte nasledujúci príkaz:

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

Vyššie uvedený príkaz nájde riadky obsahujúce text 'demo' zo všetkých textových súborov v adresári 'Newdirectory'. Zvážte nasledujúci výstup:

Linux Find

Z vyššie uvedeného výstupu vidíme, že sa zobrazili riadky s textom „demo“.

Vyhľadajte každý adresár

 $ find / -name file1 -type f -print 

Vyššie uvedený príkaz nájde všetky adresáre pre bežný súbor, ktorého názov je súbor1 a vytlačí ho na obrazovku. Vo všeobecnosti nie je dobrý nápad vyhľadávať súbory týmto spôsobom. Môže to trvať veľa času. Najlepšie je teda spomenúť adresár. Niekoľko operačných systémov môže pripojiť súborové systémy (dynamické), ktoré nie sú vhodné pre príkaz find. Zložitejšie názvy súborov obsahujúce znaky jedinečné pre shell môžu vyžadovať uzavretie v jednoduchých úvodzovkách.