"Globbing" -bestanden (met Dir.glob) in Ruby kunt u alleen de gewenste bestanden selecteren, zoals alle XML-bestanden, in een bepaalde map. Ondanks dat Dir.blog is Leuk vinden reguliere uitdrukkingen, dat is het niet. Het is zeer beperkt in vergelijking met Ruby's reguliere expressies en is nauwer verwant aan wildcards voor shell-expansie.
Het tegenovergestelde van globbing, waarbij alle bestanden in een map worden herhaald, kan met de Dir.foreach methode.
De volgende glob komt overeen met alle bestanden die eindigen op .rb in de huidige map. Het gebruikt een enkele jokerteken, de asterisk. De asterisk komt overeen met nul of meer tekens, dus elk bestand eindigt op .rb komt overeen met deze glob, inclusief een eenvoudig genoemd bestand .rb, met niets vóór de bestandsextensie en de voorafgaande periode. De glob-methode retourneert alle bestanden die overeenkomen met de globbing-regels als een array, die kan worden opgeslagen voor later gebruik of wordt herhaald.
#! / usr / bin / env ruby
Dir.glob ('*. Rb'). Elk doen | f |
zet f
einde
Er zijn slechts enkele jokertekens te leren:
Een ding om te overwegen is hoofdlettergevoeligheid. Het is aan het besturingssysteem om te bepalen of test.txt en test.txt verwijzen naar hetzelfde bestand. Op Linux en andere systemen zijn dit verschillende bestanden. In Windows verwijzen deze naar hetzelfde bestand.
Het besturingssysteem is ook verantwoordelijk voor de volgorde waarin de resultaten worden weergegeven. Het kan verschillen als u bijvoorbeeld Windows versus Linux gebruikt.
Een laatste ding om op te merken is het Dir [globstring] gemaksmethode. Dit is functioneel hetzelfde als Dir.glob (globstring) en is ook semantisch correct (u indexeert een map, net als een array). Om deze reden kunt u zien Dir [] vaker dan Dir.glob, maar ze zijn hetzelfde.
Het volgende voorbeeldprogramma zal zoveel mogelijk patronen laten zien in veel verschillende combinaties.
#! / usr / bin / env ruby
# Download alle .xml-bestanden
Dir [ '*. Xml']
# Krijg alle bestanden met 5 karakters en een .jpg extensie
Dir [ '?????. Jpg']
# Krijg alle jpg-, png- en gif-afbeeldingen
Dir [ '*. Jpg, png, gif']
# Daal af in de mapstructuur en krijg alle jpg-afbeeldingen
# Opmerking: hiermee worden ook jpg-afbeeldingen in de huidige map opgeslagen
Dir [ '** / *. Jpg']
# Daal af in alle mappen beginnend met Uni en vind alles
# jpg afbeeldingen.
# Opmerking: dit daalt slechts één map af
Dir [ 'Uni ** / *. Jpg']
# Daal af in alle mappen die beginnen met Uni en alle
# submappen van mappen die beginnen met Uni en zoeken
# alle .jpg-afbeeldingen
Dir [ 'Uni ** / ** / *. Jpg']