"подстановка"файлы (с Dir.glob) в Ruby позволяет выбрать только те файлы, которые вы хотите, например, все файлы XML, в данном каталоге. Даже если Dir.blog является нравиться регулярные выражения, это не так. Это очень ограничено по сравнению с Рубинрегулярные выражения и более тесно связаны с подстановочными знаками расширения оболочки.
Противоположность глобализации, итерации по всем файлам в каталоге, можно сделать с помощью Dir.foreach метод.
пример
Следующий глобус будет соответствовать всем файлам, оканчивающимся на .rb в Текущий каталог. Он использует один подстановочный знак, звездочку. Звездочка будет соответствовать нулю или более символов, поэтому любой файл, заканчивающийся на .rb будет соответствовать этому глобу, в том числе файл с именем просто .rb, с ничем до расширения файла и предшествующего периода. Метод glob возвращает все файлы, которые соответствуют правилам globbing, в виде массива, который можно сохранить для дальнейшего использования или повторить.
#! / usr / bin / env ruby
Dir.glob ('*. Rb'). Каждый делает | f |
ставит f
конец
Подстановочные знаки и многое другое
Есть только несколько подстановочных знаков для изучения:
- * - Совпадение ноль или более символов. Глобус, состоящий только из звездочки и никаких других символов или подстановочных знаков, будет соответствовать всем файлам в текущем каталоге. Звездочка обычно объединяется с расширением файла, если не больше символов, чтобы сузить поиск.
- ** - Сопоставить все каталоги рекурсивно. Это используется для спуска в дерево каталогов и поиска всех файлов в подкаталогах текущего каталога, а не только файлов в текущем каталоге. Этот шаблон рассматривается в приведенном ниже примере кода.
- ? - Соответствуйте любому персонажу. Это полезно для поиска файлов, имена которых имеют определенный формат. Например, 5 символов и расширение XML могут быть выражены как ... XML.
- [A-Z] - Соответствуйте любому символу в наборе символов. Набор может быть либо списком символов, либо диапазоном, разделенным символом дефиса. Наборы символов следуют тому же синтаксису и ведут себя так же, как наборы символов в регулярных выражениях.
- {а, б} - Совпадение по шаблону a или b. Хотя это выглядит как квантификатор регулярного выражения, это не так. Например, в регулярном выражении шаблон а {1,2} будет соответствовать 1 или 2 символам «а». В глобализации это будет соответствовать строке a1 или a2. Другие шаблоны могут быть вложены в эту конструкцию.
Одна вещь, чтобы рассмотреть это чувствительность к регистру. Это зависит от операционной системы, чтобы определить, является ли test.txt и Тестовое задание. Текст обратитесь к тому же файлу. В Linux и других системах это разные файлы. В Windows они ссылаются на один и тот же файл.
Операционная система также отвечает за порядок отображения результатов. Это может отличаться, если вы используете Windows по сравнению с Linux, например.
И последнее, что следует отметить, это Dir [globstring] удобный метод. Это функционально так же, как Dir.glob (Globstring) и также семантически правильно (вы индексируете каталог, очень похоже на массив). По этой причине вы можете увидеть Dir [] чаще чем Dir.glob, но это одно и то же.
Примеры использования подстановочных знаков
В следующем примере программа продемонстрирует как можно больше паттернов во многих различных комбинациях.
#! / usr / bin / env ruby
# Получить все .xml файлы
Dir [ '*. XML']
# Получить все файлы с 5 символами и расширением .jpg
Dir [ '... JPG']
# Получить все изображения JPG, PNG и GIF
Дир ['*. {Jpg, png, gif}']
# Спуститесь в дерево каталогов и получите все изображения jpg
# Примечание: при этом также будут сохраняться изображения jpg в текущем каталоге
Dir [ '** / *. JPG']
# Спуститесь во все каталоги, начиная с Uni, и найдите все
# JPG изображения.
# Примечание: это спускается только на один каталог
Dir [ 'Uni ** / *. JPG']
# Спуск во все каталоги, начиная с Uni и все
# подкаталоги каталогов, начинающихся с Uni и find
# все .jpg изображения
Dir [ 'Uni ** / ** / *. JPG']