"Globbing"datoteke (sa Dir.glob) u Rubyu omogućuje vam da odaberete samo datoteke koje želite, kao što su sve XML datoteke, u datoj mapi. Čak iako Dir.blog je Kao pravilni izrazi, nije. Vrlo je ograničen u odnosu na Rubinpravilni izrazi i više su povezani s nadimcima za proširenje ljuske.
Suprotno globingu, ponavljanje nad svim datotekama u direktoriju, može se obaviti s Dir.foreach metoda.
Primjer
Sljedeći glob će odgovarati svim datotekama koje završavaju u .rb u trenutni imenik. Koristi jednu zamjensku oznaku, zvjezdicu. Zvezdica će odgovarati nuli ili više znakova, tako da svaka datoteka koja završava u .rb će odgovarati ovom globusu, uključujući datoteku koja se zove jednostavno .rb, bez ičega prije proširenja datoteke i prethodnog razdoblja. Globus metoda vratit će sve datoteke koje se podudaraju s pravilima globbinga kao niz koji se mogu spremiti za kasniju upotrebu ili ponoviti.
#! / usr / bin / env rubin
Dir.glob ('*. Rb'). Svaki do | f |
stavlja f
kraj
Wildcards i još mnogo toga
Postoji samo nekoliko zamjenskih znakova:
- * - Podudaranje nula ili više znakova. Globus koji se sastoji samo od zvjezdica i nema drugih znakova ili zamjenskih znakova odgovarat će svim datotekama u trenutnom direktoriju. Zvezdica se obično kombinira s ekstenzijom datoteke, ako ne i više znakova kako bi suzili pretraživanje.
- ** - Rekurzivno uskladite sve direktorije. Ovo se koristi za silazak u stablo direktorija i pronalaženje svih datoteka u podmapama trenutne mape, a ne samo datoteka u trenutnoj mapi. Ova je zamjenska vrsta istražena u primjeru koda u nastavku.
- ? - Uskladite bilo koji znak. Ovo je korisno za pronalaženje datoteka čije se ime nalazi u određenom formatu. Na primjer, 5 znakova i .xml ekstenzija mogu se izraziti kao ... xML.
- [A-z] - Podudaranje bilo kojeg znaka u skupu znakova. Skup može biti ili popis znakova ili raspon odvojen crticom. Skup znakova slijedi istu sintaksu kao i ponaša se na isti način kao i skupovi znakova u pravilnim izrazima.
- {a, b} - Podudarni obrazac a ili b. Iako ovo izgleda kao kvantifikat regularnog izraza, nije. Na primjer, u pravilnom izrazu, uzorak a {1,2} podudarat će se sa 1 ili 2 'a' znakova. U globingu će odgovarati nizu a1 ili a2. Unutar ove konstrukcije mogu se ugnijezditi ostali obrasci.
Jedna stvar koju treba uzeti u obzir jest osjetljivost na velika i mala slova. O operativnom sustavu je da odluči hoće li TEST.txt i Test. TXT odnose se na istu datoteku. Na Linuxu i drugim sustavima to su različite datoteke. U sustavu Windows one će se odnositi na istu datoteku.
Operativni sustav je također odgovoran za redoslijed prikaza rezultata. Može se razlikovati ako ste na sustavu Windows nasuprot Linux, na primjer.
Još jedna stvar koju treba napomenuti jest Dir [globstring] praktičnost metoda. Ovo je funkcionalno isto Dir.glob (globstring) i također je semantički ispravno (indeksirate direktorij, slično kao niz). Iz tog razloga, možete vidjeti Dir [] češće nego Dir.glob, ali oni su ista stvar.
Primjeri upotrebom zamjenskih znakova
Sljedeći primjeri programa pokazat će što više obrazaca u mnogim različitim kombinacijama.
#! / usr / bin / env rubin
# Dohvati sve .xml datoteke
Dir [ '*. Xml']
# Nabavite sve datoteke s 5 znakova i .jpg ekstenziju
Dir [ '... jpg']
# Nabavite sve jpg, png i gif slike
Dir ['*. {Jpg, png, gif}']
# Spustite se u stablo imenika i dobit ćete sve jpg slike
# Napomena: ovo će također umetnuti jpg slike u trenutni direktorij
Dir [ '** / *. Jpg']
# Spusti se u sve direktorije koje počinju s Uni i pronađite sve
# jpg slike
# Napomena: ovo se spušta samo po jedan direktorij
Dir [ 'Uni ** / *. Jpg']
# Spusti se u sve direktorije počevši od Uni i sve
# poddirektorijima direktorija koji počinju s Uni i pronalaze
# sve .jpg slike
Dir [ 'Uni ** / ** / *. Jpg']