"globbingu"súbory (s Dir.glob) v Ruby vám umožňuje vybrať iba požadované súbory, napríklad všetky súbory XML, v danom adresári. Aj keď Dir.blog je Páči sa mi to regulárne výrazy nie sú. V porovnaní s rubín'regulárne výrazy a je užšie spojené s zástupnými znakmi rozšírenia shellu.
Opak globpingu, ktorý sa opakuje vo všetkých súboroch v adresári, je možné vykonať pomocou Dir.foreach metóda.
príklad
Nasledujúci glob sa bude zhodovať so všetkými súbormi končiacimi na .rb v aktuálny adresár. Používa jednu zástupnú hviezdičku. Hviezdička bude zodpovedať nule alebo viac znakov, takže akýkoľvek súbor končiaci na .rb sa bude zhodovať s touto zemeguľou vrátane súboru s názvom jednoducho .rb, bez prípony súboru a predošlého obdobia. Metóda glob vráti všetky súbory, ktoré zodpovedajú pravidlám globbing, ako pole, ktoré možno uložiť na neskoršie použitie alebo opakovať.
#! / usr / bin / env ruby
Dir.glob („*. Rb“). Každý do | f |
kladie f
koniec
Zástupné znaky a ďalšie
Naučiť sa môžete iba niekoľko zástupných znakov:
- * - Zhoda nulových alebo viacerých znakov. Glob obsahujúci iba hviezdičku a žiadne ďalšie znaky alebo zástupné znaky sa bude zhodovať so všetkými súbormi v aktuálnom adresári. Hviezdička sa zvyčajne skombinuje s príponou súboru, ak nie viac znakov, aby sa vyhľadávanie zúžilo.
- ** - Porovnajte všetky adresáre rekurzívne. Používa sa na zostup do stromu adresárov a na nájdenie všetkých súborov v podadresároch aktuálneho adresára, nielen súborov v aktuálnom adresári. Táto zástupná značka je preskúmaná v príklade nižšie.
- ? - Zápas ľubovoľný znak. Toto je užitočné pri hľadaní súborov, ktorých meno je v konkrétnom formáte. Napríklad 5 znakov a prípona .xml možno vyjadriť ako ... xml.
- [A-Z] - Zhodujte ľubovoľný znak zo sady znakov. Sada môže byť buď zoznam znakov alebo rozsah oddelený spojovníkom. Znakové sady sa riadia rovnakou syntaxou a správajú sa rovnako ako znakové sady v regulárnych výrazoch.
- {a, b} - Zhoda vzoru a alebo b. Aj keď to vyzerá ako kvantifikátor regulárneho výrazu, nie je. Napríklad v regulárnom výraze vzor a {1,2} bude zodpovedať 1 alebo 2 znakom „a“. Pri guľkách bude zodpovedať reťazci a1 alebo a2. Vo vnútri tohto konštruktu môžu byť vnorené ďalšie vzory.
Jedna vec na zváženie je citlivosť na veľké a malé písmená. Záleží na operačnom systéme, aby určil, či test.txt a TEST. TXT odkazovať na rovnaký súbor. V systéme Linux a ďalších systémoch ide o rôzne súbory. V systéme Windows sa bude odkazovať na rovnaký súbor.
Operačný systém je tiež zodpovedný za poradie, v ktorom sa výsledky zobrazujú. Môže sa líšiť, ak ste v systéme Windows verzus linux, napríklad.
Jedna posledná vec, ktorú treba poznamenať, je Smer [globstring] metóda pohodlia. Toto je funkčne rovnaké ako Dir.glob (globstring) a je tiež sémanticky správna (indexujete adresár, podobne ako pole). Z tohto dôvodu môžete vidieť Dir [] častejšie ako Dir.glob, ale to isté.
Príklady použitia zástupných znakov
Nasledujúci príklad programu bude demonštrovať toľko vzorov, koľko dokáže, v mnohých rôznych kombináciách.
#! / usr / bin / env ruby
# Získať všetky súbory .xml
Dir [ '*. Xml']
# Získajte všetky súbory s 5 znakmi a príponou .jpg
Dir [ '... jpg']
# Získajte všetky obrázky vo formáte jpg, png a gif
Dir ['*. {Jpg, png, gif}']
# Zísť do adresárového stromu a získať všetky obrázky jpg
# Poznámka: Týmto sa tiež uložia obrázky jpg do aktuálneho adresára
Dir [ '** / *. Jpg']
# Zíďte do všetkých adresárov počnúc Uni a nájdite všetky
# jpg obrázky.
# Poznámka: zostupuje iba o jeden adresár
Dir [ 'Uni ** / *. Jpg']
# Zísť do všetkých adresárov počnúc Uni a všetkými
# podadresáre adresárov začínajúce na Uni a find
# všetky obrázky .jpg
Dir [ 'Uni ** / ** / *. Jpg']