Fichiers "Globbing" (avec Dir.glob) dans Ruby vous permet de sélectionner uniquement les fichiers que vous souhaitez, tels que tous les fichiers XML, dans un répertoire donné. Même si Dir.blog est comme les expressions régulières, ce n'est pas le cas. Il est très limité par rapport aux expressions régulières de Ruby et est plus étroitement lié aux caractères génériques d'extension de shell.
L’opposé du globbing, itérant sur tous les fichiers d’un répertoire, peut être fait avec le Dir.foreach méthode.
Le glob suivant correspondra à tous les fichiers se terminant par .rb dans le répertoire courant. Il utilise un seul caractère générique, l'astérisque. L'astérisque correspondra à zéro ou plusieurs caractères, donc tout fichier se terminant par .rb correspondra à ce glob, y compris un fichier appelé simplement .rb, sans rien avant l'extension de fichier et sa période précédente. La méthode glob renverra tous les fichiers qui correspondent aux règles de globbing sous forme de tableau, qui peut être enregistré pour une utilisation ultérieure ou itéré sur.
#! / usr / bin / env rubis
Dir.glob ('*. Rb'). Chacun fait | f |
met f
fin
Il n'y a que quelques caractères génériques à apprendre:
Une chose à considérer est la sensibilité à la casse. C'est au système d'exploitation de déterminer si TEST.txt et TeSt.TxT se référer au même fichier. Sur Linux et d'autres systèmes, ce sont des fichiers différents. Sous Windows, ceux-ci feront référence au même fichier.
Le système d'exploitation est également responsable de l'ordre dans lequel les résultats sont affichés. Cela peut différer si vous utilisez Windows ou Linux, par exemple.
Une dernière chose à noter est la Dir [globstring] méthode de commodité. Ceci est fonctionnellement le même que Dir.glob (globstring) et est également sémantiquement correct (vous indexez un répertoire, un peu comme un tableau). Pour cette raison, vous pouvez voir Dir [] plus souvent que Dir.glob, mais c'est la même chose.
L'exemple de programme suivant montrera autant de modèles que possible dans de nombreuses combinaisons différentes..
#! / usr / bin / env rubis
# Obtenez tous les fichiers .xml
Dir ['*. Xml']
# Obtenez tous les fichiers avec 5 caractères et une extension .jpg
Dir ['?????. Jpg']
# Obtenez toutes les images jpg, png et gif
Dir ['*. Jpg, png, gif']
# Descendez dans l'arborescence des répertoires et obtenez toutes les images jpg
# Remarque: cela enregistrera également les images jpg dans le répertoire courant
Dir ['** / *. Jpg']
# Descendez dans tous les répertoires commençant par Uni et trouvez tous
# images jpg.
# Remarque: cela ne descend que dans un répertoire
Dir ['Uni ** / *. Jpg']
# Descendez dans tous les répertoires commençant par Uni et tous
# sous-répertoires de répertoires commençant par Uni et find
# toutes les images .jpg
Dir ['Uni ** / ** / *. Jpg']