Archivos "Globbing" (con Dir.glob) en Ruby le permite seleccionar solo los archivos que desea, como todos los archivos XML, en un directorio determinado. Aunque Dir.blog es me gusta expresiones regulares, no lo es. Es muy limitado en comparación con las expresiones regulares de Ruby y está más estrechamente relacionado con los comodines de expansión de shell.
Lo contrario de globbing, iterando sobre todos los archivos en un directorio, se puede hacer con el Dir.foreach método.
El siguiente glob coincidirá con todos los archivos que terminan en .rb en el directorio actual Utiliza un solo comodín, el asterisco. El asterisco coincidirá con cero o más caracteres, por lo que cualquier archivo que termine en .rb coincidirá con este globo, incluido un archivo llamado simplemente .rb, sin nada antes de la extensión del archivo y su período anterior. El método glob devolverá todos los archivos que coincidan con las reglas globales como una matriz, que se puede guardar para su uso posterior o iterar sobre.
#! / usr / bin / env ruby
Dir.glob ('*. Rb'). Cada do | f |
pone f
final
Solo hay algunos comodines para aprender:
Una cosa a considerar es la sensibilidad a mayúsculas y minúsculas. Depende del sistema operativo determinar si TEST.txt y TeSt.TxT consulte el mismo archivo. En Linux y otros sistemas, estos son archivos diferentes. En Windows, estos se referirán al mismo archivo.
El sistema operativo también es responsable del orden en que se muestran los resultados. Puede diferir si está en Windows versus Linux, por ejemplo.
Una última cosa a tener en cuenta es el Dir [cadena global] método de conveniencia Esto es funcionalmente lo mismo que Dir.glob (cadena global) y también es semánticamente correcto (está indexando un directorio, como una matriz). Por esta razón, puede ver Dir [] más a menudo que Dir.glob, pero son lo mismo.
El siguiente programa de ejemplo demostrará tantos patrones como sea posible en muchas combinaciones diferentes.
#! / usr / bin / env ruby
# Obtenga todos los archivos .xml
Dir ['*. Xml']
# Obtenga todos los archivos con 5 caracteres y una extensión .jpg
Dir ['?????. Jpg']
# Obtenga todas las imágenes jpg, png y gif
Dir ['*. Jpg, png, gif']
# Desciende al árbol de directorios y obtén todas las imágenes jpg
# Nota: esto también archivará imágenes jpg en el directorio actual
Dir ['** / *. Jpg']
# Desciende a todos los directorios comenzando con Uni y encuentra todos
# imágenes jpg.
# Nota: esto solo desciende por un directorio
Dir ['Uni ** / *. Jpg']
# Desciende a todos los directorios que comienzan con Uni y todos
# subdirectorios de directorios que comienzan con Uni y find
# todas las imágenes .jpg
Dir ['Uni ** / ** / *. Jpg']