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