Uporaba Glob z imeniki v Rubyju

"Globbingdatotek (s Dir.glob) v Rubyju omogoča, da v danem imeniku izberete samo datoteke, ki jih želite, na primer vse datoteke XML. Čeprav Dir.blog je všeč rednih izrazov, ni. V primerjavi z Rubyredni izrazi in je bolj povezan z nadomestnimi znaki razširitve lupine.

Nasprotno od globbinga, iteracije nad vse datoteke v imeniku, je mogoče storiti z Dir.predavanje metoda.

Primer

Naslednji globus bo ustrezal vsem datotekam, ki se končajo v .rb v trenutni imenik. Uporablja eno samo črko, zvezdico. Zvezdica se bo ujemala z nič ali več znaki, tako da se vsaka datoteka, ki se konča v .rb se ujema s tem globom, vključno z datoteko, ki se imenuje preprosto .rb, pred pripono in njenim predhodnim obdobjem, brez ničesar. Metoda glob bo vrnila vse datoteke, ki ustrezajo pravilom globbinga, kot matriko, ki jo je mogoče shraniti za kasnejšo uporabo ali jo ponoviti.

 #! / usr / bin / env rubin


 Dir.glob ('*. Rb'). Vsak narediti | f |

 postavlja ž

 konec

Wildcards in še več

Naučite se lahko le nekaj nadomestnih znakov:

instagram viewer
  • * - Ujemanje nič ali več znakov. Globok, sestavljen iz zvezdice in nobenih drugih znakov ali nadomestnih znakov, se ne bo ujemal z vsemi datotekami v trenutnem imeniku. Zvezdica je ponavadi kombinirana s pripono datoteke, če ne več znakov, da zoži iskanje.
  • ** - Redno se ujemajte z vsemi imeniki. To se uporablja za spuščanje v drevo imenikov in iskanje vseh datotek v podimenikih trenutnega imenika, ne le datotek v trenutnem imeniku. Ta nadomestni znak je raziskan v spodnjem primeru.
  • ? - Ujemanje katerega koli enega znaka. To je uporabno za iskanje datotek, katerih ime je v določeni obliki. Na primer, 5 znakov in pripona .xml je lahko izraženo kot ... xml.
  • [a-z] - Ujema se s katerim koli znakom v naboru znakov. Nabor je lahko seznam znakov ali obseg, ločen z vezajem. Nabori znakov sledijo isti sintaksi kot in se obnašajo na enak način kot nabori znakov v pravilnih izrazih.
  • {a, b} - Ujemite vzorec a ali b. Čeprav je to videti kot količnik običajnih izrazov, ni. Na primer, v pravilnem izražanju vzorec a {1,2} se ujema z 1 ali 2 'a' znakoma. V globingu se bo ujemala z nizom a1 ali a2. Znotraj tega konstrukta lahko gnezdijo druge vzorce.

Ena stvar, ki jo je treba upoštevati, je občutljivost primerov. Od operacijskega sistema je odvisno, ali bo TEST.txt in TeSt. TxT nanašajo se na isto datoteko. V Linuxu in drugih sistemih so to različne datoteke. V sistemu Windows se bodo te nanašale na isto datoteko.

Operativni sistem je odgovoren tudi za vrstni red prikazanih rezultatov. Lahko se razlikuje, če uporabljate Windows v primerjavi z Linuxna primer.

Še ena zadnja stvar je Dir [globstring] udobje metoda. To je funkcionalno enako kot Dir.glob (globstring) in je tudi pomensko pravilen (indeksirate imenik, podobno kot matrika). Zaradi tega boste morda videli Dir [] pogosteje kot Dir.glob, vendar so ista stvar.

Primeri uporabe nadomestnih znakov

Naslednji primer programa bo pokazal čim več vzorcev v različnih kombinacijah.

 #! / usr / bin / env rubin


 # Pridobite vse .xml datoteke

 Dir ['*. Xml']


 # Pridobite vse datoteke s 5 znaki in pripono .jpg

 Dir ['... jpg']


 # Pridobite vse slike v obliki jpg, png in gif

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


 # Spustite se v drevo imenikov in pridobite vse slike jpg

 # Opomba: s tem bodo datoteke jpg shranjene tudi v trenutnem imeniku

 Dir ['** / *. Jpg']


 # Spustite se v vse imenike, začenši z Uni in poiščite vse

 # jpg slike

 # Opomba: to se spušča samo po enem imeniku

 Dir ['Uni ** / *. Jpg']


 # Spustite se v vse imenike, začenši z Uni in vse

 # podmap v imenikih, ki se začnejo z Uni in poiščejo

 # vse slike .jpg

 Dir ['Uni ** / ** / *. Jpg']

instagram story viewer