File "Globbing" (con Dir.glob) in Ruby ti consente di selezionare solo i file desiderati, come tutti i file XML, in una determinata directory. Nonostante Dir.blog è piace espressioni regolari, non lo è. È molto limitato rispetto alle espressioni regolari di Ruby ed è più strettamente correlato ai caratteri jolly di espansione della shell.
L'opposto del globbing, che scorre su tutti i file in una directory, può essere fatto con Dir.foreach metodo.
Il seguente glob corrisponderà a tutti i file che terminano con .rb nella directory corrente. Utilizza un solo carattere jolly, l'asterisco. L'asterisco corrisponderà a zero o più caratteri, quindi qualsiasi file che termina con .rb corrisponderà a questo glob, incluso un file chiamato semplicemente .rb, con nulla prima dell'estensione del file e del suo periodo precedente. Il metodo glob restituirà tutti i file che corrispondono alle regole globbing come un array, che possono essere salvati per un uso successivo o ripetuti.
#! / usr / bin / env ruby
Dir.glob ('*. Rb'). Ognuno fa | f |
mette f
fine
Ci sono solo alcuni caratteri jolly da imparare:
Una cosa da considerare è la distinzione tra maiuscole e minuscole. Sta al sistema operativo determinare se tEST.TXT e tEST.TXT fare riferimento allo stesso file. Su Linux e altri sistemi, si tratta di file diversi. Su Windows, questi faranno riferimento allo stesso file.
Il sistema operativo è anche responsabile dell'ordine in cui vengono visualizzati i risultati. Ad esempio, potrebbe essere diverso su Windows rispetto a Linux.
Un'ultima cosa da notare è il Dir [globstring] metodo di convenienza. Funzionalmente è uguale a Dir.glob (globstring) ed è anche semanticamente corretto (stai indicizzando una directory, proprio come un array). Per questo motivo, potresti vedere Dir [] più spesso di Dir.glob, ma sono la stessa cosa.
Il seguente programma di esempio mostrerà quanti più schemi possibile in molte combinazioni diverse.
#! / usr / bin / env ruby
# Ottieni tutti i file .xml
Dir [ '*. Xml']
# Ottieni tutti i file con 5 caratteri e un'estensione .jpg
Dir [ '?????. Jpg']
# Ottieni tutte le immagini jpg, png e gif
Dir [ '*. Jpg, png, gif']
# Scendi nell'albero delle directory e ottieni tutte le immagini jpg
# Nota: questo archivierà anche le immagini jpg nella directory corrente
Dir [ '** / *. Jpg']
# Scendi in tutte le directory che iniziano con Uni e trova tutto
# immagini jpg.
# Nota: questo scende solo in una directory
Dir [ 'Uni ** / *. Jpg']
# Discendi in tutte le directory che iniziano con Uni e tutti
# sottodirectory delle directory che iniziano con Uni e find
# tutte le immagini .jpg
Dir [ 'Uni ** / ** / *. Jpg']