logo

Ako rekurzívne nájsť všetky súbory v aktuálnych a podpriečinkoch na základe zhody zástupných znakov v systéme Linux

Prechádzanie cez strom adresárov na nájdenie súborov je bežnou operáciou, ktorú vykonáva väčšina softvéru na správu súborových systémov. Tento nástroj je vo väčšine operačných systémov vo forme príkazov príkazového riadka. V tomto článku sa dozviete, ako nájsť súbory pomocou zhody zástupných znakov v operačnom systéme Linux.

Rekurzívne vyhľadávanie súborov v strome adresárov

Použitie príkaz nájsť bude určený na plnenie úlohy. Príkaz „s“ sa používa na vyhľadávanie súborov v hierarchii adresárov. Stránka pomocníka príkazu find je nasledovná:



Príkaz find a prepínač -name vyhľadajú požadovaný súbor v adresári. Prepínač poskytuje názov (alebo vzor) príkazu find, ktorý má hľadať. Posledný príkaz by teda bol

find -name 'Re_Pattern'>

V dôsledku toho by sa zobrazil akýkoľvek súbor s Re_Pattern v jeho súbore. Vzor môže obsahovať doslovné znaky alebo sekvenciu zástupných výrazov. V takýchto vzoroch sa používajú dva zástupné znaky:

niť.zničiť

* => Ľubovoľný znak koľkokrát (nemusí byť ani prítomný)



? => Mala by byť prítomná jedna postava

Adresár, v ktorom by sa operácie vykonávali, je:

Adresár obsahujúci niektoré súbory a podadresáre



preity zinta

Pre jednoduchosť sú podadresáre prázdne. Akýkoľvek vytvorený efekt bude teda viditeľný iba na súbore v tomto adresári. Súbor, ktorý by sa hľadal v adresári, by bol príkaz apple, ktorý by bol:

find -name 'apple'>

Keďže iba jeden súbor v adresári mal názov apple, vo výstupe sa zobrazil iba jeden názov. Ale ak k tomu pridáte zástupný znak, napríklad * (hviezdička):

find -name '*apple*'>

skončili sme s výsledkom všetkých súborov obsahujúcich vo svojom názve apple. Podobne by sa dala použiť kombinácia takýchto zástupných znakov. Napr. Ak chceme získať všetky súbory, ktoré majú v názve 4 znaky, príkaz by bol:

find -name '????'>

Pomocou týchto dvoch zástupných znakov by sa teda dalo vytvoriť pole vzorov na rozpoznanie niekoľkých názvov súborov. Príkaz find obsahuje ďalšie prepínače, ktoré umožňujú väčšie zefektívnenie výstupu.