Fișiere „Globbing” (cu Dir.glob) din Ruby vă permite să selectați doar fișierele pe care le doriți, cum ar fi toate fișierele XML, într-un director dat. Chiar dacă Dir.blog este ca expresii obișnuite, nu este. Este foarte limitată în comparație cu expresiile obișnuite ale lui Ruby și este mai strâns legată de wildcard-urile de expansiune.
Opusul globbing-ului, iterativ peste toate fișierele dintr-un director, se poate face cu Dir.foreach metodă.
Următorul glob se va potrivi cu toate fișierele care se termină .rb în directorul curent. Utilizează un singur wildcard, asteriscul. Asteriscul se va potrivi cu zero sau mai multe caractere, deci orice fișier se va încheia .rb se va potrivi cu acest glob, inclusiv un fișier numit simplu .rb, cu nimic înainte de extensia fișierului și perioada precedentă. Metoda glob va returna toate fișierele care se potrivesc regulilor globale ca un tablou, care poate fi salvat pentru utilizare ulterioară sau iteratat peste.
#! / usr / bin / env ruby
Dir.glob ('*. Rb'). Fiecare face | f |
pune f
Sfârșit
Există doar câteva wildcards pentru a învăța:
Un lucru de luat în considerare este sensibilitatea cazurilor. Depinde de sistemul de operare să stabilească dacă test.txt și test.txt consultați același fișier. Pe Linux și alte sisteme, acestea sunt fișiere diferite. Pe Windows, acestea se vor referi la același fișier.
Sistemul de operare este, de asemenea, responsabil pentru ordinea în care sunt afișate rezultatele. Poate diferi dacă sunteți pe Windows versus Linux, de exemplu.
Un ultim lucru de remarcat este Dir [globstring] metoda de comoditate. Acest lucru este funcțional la fel ca și Dir.glob (globstring) și este, de asemenea, corect semantic (indexați un director, la fel ca un tablou). Din acest motiv, este posibil să vedeți Dir [] mai des decât Dir.glob, dar sunt același lucru.
Următorul exemplu de program va demonstra cât mai multe tipare pe mai multe combinații diferite.
#! / usr / bin / env ruby
# Obține toate fișierele .xml
Dir [ '*. Xml']
# Obține toate fișierele cu 5 caractere și o extensie .jpg
Dir [ '?????. Jpg']
# Obține toate imaginile jpg, png și gif
Dir [ '*. Jpg, png, gif']
# Coborâți în arborele de directoare și obțineți toate imaginile jpg
# Notă: aceasta va fi, de asemenea, fișiere jpg imagini în directorul curent
Dir [ '** / *. Jpg']
# Descinde în toate directoarele începând cu Uni și găsește toate
# imagini jpg.
# Notă: aceasta coboară doar un director
Dir [ 'Uni ** / *. Jpg']
# Descinde în toate directoarele începând cu Uni și toate
# subdirectorii de directoare care încep cu Uni și find
# toate imaginile .jpg
Dir [ 'Uni ** / ** / *. Jpg']