"Globbing" -filer (med Dir.glob) i Ruby kan du välja bara de filer du vill, till exempel alla XML-filer, i en viss katalog. Även om Dir.blog är tycka om regelbundna uttryck, det är det inte. Det är väldigt begränsat jämfört med Rubys regelbundna uttryck och är närmare besläktat med skalutvidgningskort.
Det motsatta av att glödja, iterera över alla filer i en katalog, kan göras med Dir.foreach metod.
Följande glob matchar alla filer som slutar på .rb i den aktuella katalogen. Den använder ett enda jokertecken, asterisken. Stjärnan matchar noll eller fler tecken, så alla filer som slutar på .rb kommer att matcha detta glob, inklusive en fil som heter helt enkelt .rb, med ingenting före filändelsen och dess föregående period. Globmetoden returnerar alla filer som matchar globlingsreglerna som en matris, som kan sparas för senare användning eller itereras över.
#! / usr / bin / env ruby
Dir.glob ('*. Rb'). Var och en gör | f |
sätter f
slutet
Det finns bara några få jokertecken att lära sig:
En sak att tänka på är fallkänslighet. Det är upp till operativsystemet att avgöra om test.txt och test.txt hänvisar till samma fil. På Linux och andra system är det olika filer. I Windows hänvisar dessa till samma fil.
Operativsystemet ansvarar också för i vilken ordning resultaten visas. Det kan skilja sig om du till exempel använder Windows eller Linux.
En sista sak att notera är Dir [globstring] bekvämlighetsmetod. Detta är funktionellt samma som Dir.glob (globstring) och är också semantiskt korrekt (du indexerar en katalog, ungefär som en matris). Av denna anledning kanske du ser Dir [] oftare än Dir.glob, men de är samma sak.
Följande exempelprogram visar så många mönster som det kan i många olika kombinationer.
#! / usr / bin / env ruby
# Hämta alla .xml-filer
Dir [ '*. Xml']
# Få alla filer med 5 tecken och en .jpg-förlängning
Dir [ '?????. Jpg']
# Få alla jpg-, png- och gif-bilder
Dir [ '*. Jpg, png, gif']
# Gå ner i katalogträdet och få alla jpg-bilder
# Obs: detta kommer också att arkivera jpg-bilder i den aktuella katalogen
Dir [ '** / *. Jpg']
# Gå ner i alla kataloger som börjar med Uni och hitta alla
# jpg-bilder.
# Obs! Detta kommer bara ner en katalog
Dir [ 'Uni ** / *. Jpg']
# Gå ner i alla kataloger som börjar med Uni och alla
# underkataloger av kataloger som börjar med Uni och hitta
# alla .jpg-bilder
Dir [ 'Uni ** / ** / *. Jpg']