„Glob“ naudojimas su „Ruby“ katalogais

"Globimas"failai (su Dir.globas) „Ruby“ leidžia pasirinkti tam tikrame kataloge tik tuos failus, kuriuos norite, pavyzdžiui, visus XML failus. Vis dėlto Dir.blog yra Kaip taisyklingos išraiškos, taip nėra. Tai labai ribota, palyginti su Rubinasreguliarios išraiškos ir yra labiau susijęs su pakaitomis su apvalkalo plėtra.

„Globbing“ priešingybė, iteruojanti visus katalogo failus, gali būti padaryta naudojant Rež metodas.

Pavyzdys

Šis žodis atitiks visus failus, kurių pabaiga yra .rb viduje dabartinis katalogas. Jis naudoja vieną pakaitos ženklą, žvaigždutę. Žvaigždutė atitiks nulį ar daugiau simbolių, taigi bet kuris failas baigiasi .rb atitiks šią reikšmę, įskaitant failą, vadinamą tiesiog .rb, nieko prieš failo plėtinį ir ankstesnį jo laikotarpį. „Glob“ metodas grąžins visus failus, kurie atitinka gaubimo taisykles, kaip masyvą, kurį galima išsaugoti vėlesniam naudojimui arba pakartoti.

 #! / usr / bin / env rubinas


 Dir.glob ('*. Rb'). Kiekvienas daro | f |

 kelia f

 galas

Pakaitos simboliai ir dar daugiau

instagram viewer

Yra tik keli pakaitos ženklai, kuriuos reikia išmokti:

  • * - Suderinkite nulį ar daugiau simbolių. Globalas, kurį sudaro tik žvaigždutė ir jokių kitų simbolių ar pakaitos ženklų, atitiks visus dabartiniame kataloge esančius failus. Žvaigždutė paprastai derinama su failo plėtiniu, jei ne daugiau simbolių, kad būtų susiaurinta paieška.
  • ** - Suderinkite visus katalogus rekursyviai. Tai naudojama norint nusileisti į katalogų medį ir rasti visus failus dabartinio katalogo pakatalogiuose, o ne tik failus dabartiniame kataloge. Šis pakaitos ženklas yra išnagrinėtas žemiau pateiktame pavyzdžio kode.
  • ? - Suderinkite bet kurį personažą. Tai naudinga ieškant failų, kurių pavadinimai yra tam tikro formato. Pavyzdžiui, 5 simboliai ir .xml plėtinys gali būti išreikšti ... xml.
  • [a – z] - Suderinkite bet kurį simbolių rinkinio simbolį. Rinkinys gali būti ženklų sąrašas arba diapazonas, atskirtas brūkšneliu. Simbolių rinkiniai seka ta pačia sintaksė kaip ir elgiasi taip pat, kaip simbolių rinkiniai įprastomis išraiškomis.
  • {a, b} - atitikimo schema a arba b. Nors tai atrodo kaip įprastos išraiškos kiekybinis rodiklis, taip nėra. Pavyzdžiui, taisyklingos išraiškos būdu, modelis {1,2} atitiks 1 arba 2 „a“ ženklus. Globuojant, ji atitiks eilutę a1 arba a2. Kiti modeliai gali būti įterpti šio konstrukto viduje.

Reikia apsvarstyti vieną dalyką atvejo jautrumas. Operacinė sistema nustato, ar TEST.txt ir TeSt. TxT nurodyti tą patį failą. „Linux“ ir kitose sistemose tai yra skirtingi failai. „Windows“ sistemoje tai bus susiję su tuo pačiu failu.

Operacinė sistema taip pat atsakinga už rezultatų rodymo tvarką. Tai gali skirtis, jei naudojate „Windows“, palyginti su „Linux“, pavyzdžiui.

Paskutinis dalykas, į kurį reikia atkreipti dėmesį, yra Rež. patogumo metodas. Tai funkciškai sutampa su „Dir.glob“ („globalstring“) ir taip pat semantiškai teisinga (jūs indeksuojate katalogą, panašiai kaip masyvą). Dėl šios priežasties galite pamatyti Rež. dažniau nei Dir.globas, bet jie yra tas pats dalykas.

Pavyzdžiai naudojant pakaitos ženklus

Šis pavyzdinis programa parodys tiek modelių, kiek gali, naudodama daugybę skirtingų kombinacijų.

 #! / usr / bin / env rubinas


 # Gaukite visus .xml failus

 Dir ['* .xml']


 # Gaukite visus failus su 5 simboliais ir .jpg plėtiniu

 Rež. ['... JPG']


 # Gaukite visus JPG, PNG ir GIF vaizdus

 Dir ['*. {Jpg, png, gif}']


 # Nusileiskite į katalogų medį ir gaukite visus JPG vaizdus

 # Pastaba: tai taip pat įkels JPG vaizdus į dabartinį katalogą

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


 # Nusileiskite į visus katalogus, prasidedančius raide Uni, ir raskite visus

 # JPG vaizdai.

 # Pastaba: tai nusileidžia tik vienu katalogu žemyn

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


 # Nusileiskite į visus katalogus, pradedant nuo Uni ir visi

 # katalogų pakatalogiai, prasidedantys raide Uni ir find

 # visi .jpg vaizdai

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