Globi kasutamine kataloogidega kataloogides Ruby

"Gloobimine"failid (koos Dir.glob) Ruby'is võimaldab teil valida antud kataloogis ainult soovitud failid, näiteks kõik XML-failid. Kuigi Dir.blog on nagu regulaarsed väljendid, see pole nii. See on väga piiratud Rubiinregulaarsed väljendid ja on tihedamalt seotud kesta laiendamise metamärkidega.

Globaalsuse vastupidist, itereerides kõiki kataloogis olevaid faile, saab teha rakendusega Rež meetod.

Näide

Järgmine globaalne fail sobib kõigi failidega, mis lõppevad tähega .rb sisse praegune kataloog. See kasutab ühte metamärki, tärni. Tärn vastab ühele või enamale tähemärgile, seega võib iga fail lõppeda tähega .rb ühtib selle globaalsega, kaasa arvatud fail nimega lihtsalt .rb, enne faililaiendit ja sellele eelnevat perioodi pole midagi. Glob-meetod tagastab kõik gloobimise reeglitele vastavad failid massiivina, mille saab hilisemaks kasutamiseks salvestada või üle korrata.

 #! / usr / bin / env rubiin


 Dir.glob ('*. Rb'). Kumbki teeb | f |

 paneb f

 lõpp

Metamärgid ja palju muud

Õppimiseks on ainult mõned metamärgid:

instagram viewer
  • * - sobitage null või enam tähemärki. Globaalne tekst, mis koosneb ainult tärnist ja mitte ühestki muust märgist ega metamärgist, vastab kõigile praeguse kataloogi failidele. Tärn kombineeritakse tavaliselt faililaiendiga, kui mitte rohkem märke, et otsingut kitsendada.
  • ** - Kõigi kataloogide sobitamine rekursiivselt. Seda kasutatakse laskumiseks kataloogipuu ja kõigi failide leidmiseks aktiivse kataloogi alamkataloogides, mitte ainult praeguses kataloogis. Seda metamärki uuritakse allolevas näidiskoodis.
  • ? - sobitage üks tähemärk. See on kasulik failide leidmiseks, mille nimi on kindlas vormingus. Näiteks võib 5 tähemärki ja .xml-laiendit väljendada järgmiselt ... xml.
  • [a-z] - sobitage tähemärgikomplekti mis tahes märk. Komplekt võib olla kas tähemärkide loend või sidekriipsuga eraldatud vahemik. Märgikomplektid järgivad sama süntaksit ja käituvad samal viisil kui tavalistes avaldistes kasutatavad märgikomplektid.
  • {a, b} - mängu muster a või b. Kuigi see näeb välja nagu tavalise avaldise kvantifikaator, pole see nii. Näiteks regulaarväljenduses muster a {1,2} vastab 1 või 2 a-tähemärgile. Gloobimisel sobib see nööriga a1 või a2. Selle konstruktsiooni sisse võivad olla pestud ka muud mustrid.

Üks asi, mida tuleks kaaluda, on juhtumi tundlikkus. Kas operatsioonisüsteem otsustab, kas TEST.txt ja TeSt. TxT viita samale failile. Linuxi ja muude süsteemide puhul on need erinevad failid. Windowsis viitavad need samale failile.

Opsüsteem vastutab ka tulemuste kuvamise järjekorra eest. See võib erineda, kui kasutate Windowsi versiooni Linux, näiteks.

Viimane asi, mida tasub märkida, on Rež [glostring] mugavusmeetod. See on funktsionaalselt sama nagu Dir.glob (glostring) ja on ka semantiliselt õige (indekseerite kataloogi, sarnaselt massiivile). Sel põhjusel võite näha Rež [] sagedamini kui Dir.glob, kuid need on üks ja sama asi.

Näited metamärkide kasutamise kohta

Järgmine näidisprogramm näitab nii palju mustreid, kui paljudes erinevates kombinatsioonides.

 #! / usr / bin / env rubiin


 # Hankige kõik .xml-failid

 Rež ['* .xml']


 # Hankige kõik 5 tähemärgise ja .jpg-laiendiga failid

 Rež ['... jpg']


 # Hankige kõik JPG-, PNG- ja GIF-pildid

 Rež ['*. {Jpg, png, gif}']


 # Laskuge kataloogipuu ja saate kõik JPG-pildid

 # Märkus: see failib ka praeguses kataloogis olevad JPG-pildid

 Rež ['** / * .jpg']


 # Laske kõikides kataloogides, mis algavad tähega Uni, ja leidke kõik

 # jpg pilte.

 # Märkus: see laskub ainult ühest kataloogist allapoole

 Rež ['Uni ** / *. Jpg']


 # Laskuge kõigisse kataloogidesse, alustades tähega Uni ja kõik

 # kataloogide alamkataloogid, mis algavad tähega Uni ja leidke

 # kõik .jpg-pildid

 Rež ['Uni ** / ** / *. Jpg']

instagram story viewer