"A kiegészítés"fájlok (a Dir.glob) segítségével a Ruby segítségével kiválaszthatja a kívánt fájlokat, például az összes XML fájlt egy adott könyvtárban. Annak ellenére Dir.blog jelentése mint szabályos kifejezések, nem az. Ez nagyon korlátozott, összehasonlítva Rubinszokásos kifejezései, és szorosabban kapcsolódnak a shell kiterjesztésű helyettesítő karakterekhez.
A globbing ellentéte, amely a könyvtárban található összes fájl felett ismétlődik, megtehető a Dir.foreach eljárás.
Példa
A következő glob megegyezik az összes végződő fájllal .rb ban,-ben aktuális könyvtár. Egyetlen helyettesítő karaktert, a csillagot használ. A csillag nullának vagy annál több karakternek felel meg, tehát minden fájl végződik .rb megegyezik ezzel a globál, beleértve az egyszerűen hívott fájlt is .rb, semmit a fájlkiterjesztés és az azt megelőző időszak előtt. A glob metódus tömbként visszaküldi az összes olyan fájlt, amely megfelel a globális szabályoknak, és későbbi felhasználás céljából elmenthető vagy iterálható.
#! / usr / bin / env ruby
Dir.glob ('*. Rb'). Mindegyikük | f |
felteszi f
vég
Helyettesítő karakterek és így tovább
Csak néhány helyettesítő karakter megtanulható:
- * - Egyezzen nullával vagy annál több karakterrel. A globális fájl, amely csak csillagból áll, és semmilyen más karakterből vagy helyettesítő karakterből nem áll, megegyezik az aktuális könyvtár összes fájljával. A csillagot általában egy fájlkiterjesztéssel kombinálják, ha nem több karakterrel, a keresés szűkítéséhez.
- ** - Az összes könyvtárat rekurzív módon illessze össze. Ez arra szolgál, hogy a könyvtárfába süllyedjen, és az összes fájlt az aktuális könyvtár alkönyvtáraiban keresse meg, nem pedig csak az aktuális könyvtárban lévő fájlokat. Ezt a helyettesítő karaktert az alábbi példakód vizsgálja meg.
- ? - Egyezzen meg egy karakterrel. Ez hasznos olyan fájlok megtalálásához, amelyek neve egy adott formátumban van. Például az 5 karakter és az .xml kiterjesztés kifejezhető ... xml.
- [A-z] - A karakterkészlet bármely karakterének illesztése. A halmaz lehet karakterek listája vagy kötőjelekkel elválasztott tartomány. A karakterkészletek ugyanolyan szintaxist követnek, mint a normál kifejezésekben szereplő karakterkészletek, és ugyanúgy viselkednek.
- {a, b} - A vagy b illesztési minta. Bár ez úgy néz ki, mint egy reguláris kifejezés számszerűsítője, nem az. Például a reguláris kifejezésben a minta a {1,2} 1 vagy 2 'a' karakternek felel meg. Globálás esetén megegyezik a karakterlánccal a1 vagy a2. Más minták beágyazhatók ezen konstrukció belsejébe.
Az egyik dolog, amit figyelembe kell venni kis- és nagybetűk érzékenysége. Az operációs rendszer feladata annak meghatározása, hogy test.txt és Teszt. TXT ugyanazon fájlra hivatkozni. Linuxon és más rendszereken ezek különféle fájlok. Windows rendszeren ezek ugyanarra a fájlra vonatkoznak.
Az operációs rendszer felelős az eredmények megjelenítésének sorrendjéért. Ez eltérhet, ha Windows rendszert használsz Linux, például.
Az utolsó dolog, amit érdemes megjegyezni: Dir [globstring] kényelmi módszer. Ez funkcionálisan megegyezik a Dir.glob (globstring) és szintén szemantikailag helyes (egy könyvtárat indexel, ugyanúgy, mint egy tömb). Ezért láthatja Dir [] gyakrabban, mint Dir.glob, de ugyanaz a dolog.
Példák helyettesítő karakterek használatára
A következő példaprogram annyi mintát mutat be, amennyit csak lehet, különféle kombinációkban.
#! / usr / bin / env ruby
# Az összes .xml fájl letöltése
Dir [ '*. Xml']
# Szerezzen be minden fájlt 5 karakterből és .jpg kiterjesztésből
Dir [... jpg ']
# Minden JPG, png és gif képet kap
Dir ['*. {Jpg, png, gif}']
# Leereszkedjen a könyvtárfába, és kap minden jpg képet
# Megjegyzés: ez JPG képeket is tartalmaz az aktuális könyvtárban
Dir [ '** / *. Jpg']
# Leereszkedjen az Uni-tal kezdődő összes könyvtárba, és megtalálja az összeset
# jpg képek.
# Megjegyzés: ez csak egy könyvtárat ereszti le
Dir [ 'Uni ** / *. Jpg']
# Leereszkedni az összes könyvtárba, amely az Uni-val és az összesvel kezdődik
# könyvtárak alkönyvtárai, amelyek kezdőbetűi az Uni és a find
# összes .jpg kép
Dir [ 'Uni ** / ** / *. Jpg']