A Glob használata könyvtárakkal a Ruby-ban

"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ó.

instagram viewer
 #! / 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']

instagram story viewer