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ú:
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í:
- 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
- Nájdite súbory podľa typu
- Nájdite novšie súbory
- Nájdite a odstráňte súbor
- Nájdite adresár
- Nájdite súbory podľa času úpravy
- Nájdite súbory podľa povolenia
- Nájsť a nahradiť súbory
- Nájdite text vo viacerých súboroch
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:
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:
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:
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:
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:
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:
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:
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:
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.