glob
-
НАЗВАНИЕ
- glob — Возвращает имена файлов, соответствующие шаблонам
- СИНТАКСИС
- ОПИСАНИЕ
- ПАРАМЕТРЫ
-
?
- *
- [chars]
- \x
- {a,b,...}
- *
Имя
glob — Возвращает имена файлов, соответствующие шаблонамСинтаксис
glob ?переключатели? ?шаблон ...?Описание
Эта команда выполняет «сопоставление имен файлов» аналогично оболочкам csh или bash. Она возвращает список файлов, имена которых соответствуют любому из аргументов шаблон. Никакой определённой последовательности в списке не гарантируется, поэтому, если требуется отсортированный список, вызывающий должен использовать команду lsort.Параметры
Если начальные аргументы glob начинаются с -, то они рассматриваются как переключатели. В настоящее время поддерживаются следующие переключатели:Шаблоны сопоставления
Аргументы шаблон могут содержать любые из следующих специальных символов, которые являются надмножеством символов, поддерживаемых командой string match:- ?
- Соответствует любому одиночному символу.
- *
- Соответствует любой последовательности из нуля или более символов.
- [chars]
- Соответствует любому одиночному символу в chars. Если chars содержит последовательность вида a-b, то любой символ между a и b (включительно) будет соответствовать.
- \x
- Соответствует символу x.
- {a,b,...}
- Соответствует любому из подшаблонов a, b и т. д.
В Unix, как и в csh, символ «.» в начале имени файла или сразу после «/» должен быть явно указан или с помощью конструкции {}, если не задан флаг -types hidden (так как «.» в начале имени файла указывает, что он скрыт). На других платформах файлы, начинающиеся с «.», обрабатываются не иначе, чем любые другие, за исключением специальных каталогов «.» и «..», которые должны быть указаны явно (чтобы избежать рекурсивного шаблона, например, «glob -join * * * *», от рекурсии вверх по дереву каталогов так же, как и вниз). Кроме того, все символы «/» должны быть явно указаны.
Если первый символ в шаблоне — «~», то он относится к домашнему каталогу пользователя, чьё имя следует за «~». Если за «~» сразу следует «/», то используется значение переменной среды HOME.
Команда glob отличается от csh globbing двумя способами. Во-первых, она не сортирует свой результат (используйте команду lsort, если вам нужен отсортированный список). Во-вторых, glob возвращает только имена файлов, которые реально существуют; в csh проверка на существование не выполняется, если шаблон не содержит ?, *, или [].
Когда команда glob возвращает относительные пути, имена файлов которых начинаются с тильды «~» (например, через glob * или glob -tails, возвращаемый список не будет заключать тильду в «./». Это означает, что необходимо соблюдать осторожность, если эти имена будут позже использоваться с file join, чтобы избежать их интерпретации как абсолютных путей, указывающих на домашний каталог данного пользователя.
Проблемы переносимости для Windows
Для UNC-имен в Windows компоненты servername и sharename пути не могут содержать ?, *, или []. В Windows NT, если шаблон имеет вид «~имя_пользователя@домен», он относится к домашнему каталогу пользователя, чья учётная запись находится на указанном сервере домена NT. В противном случае информация об учётной записи пользователя извлекается из локального компьютера.Поскольку обратный слэш имеет особое значение для команды glob, шаблоны glob, содержащие разделители путей в стиле Windows, требуют особой осторожности. Шаблон «C:\\foo\\*» интерпретируется как «C:\foo\*», где «\f» будет соответствовать одиночному символу «f», а «\*» будет соответствовать одиночному символу «*» и не будет интерпретироваться как символ подстановочного знака. Одно из решений этой проблемы — использовать разделитель путей в стиле Unix — прямой слэш. Пути в стиле Windows можно преобразовать в пути в стиле Unix с помощью команды «file join $path» или «file normalize $path».
Примеры
Найдите все файлы Tcl в текущем каталоге:glob *.tcl
Найдите все файлы Tcl в домашнем каталоге пользователя, независимо от текущего каталога:
glob -directory ~ *.tcl
Найдите все подкаталоги текущего каталога:
glob -type d *
Найдите все файлы, имена которых содержат «a», «b» или последовательность «cde»:
glob -type f *{a,b,cde}* См. также
file
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/glob.htm
Licensed under Tcl/Tk terms
https://www.tcl.tk/man/tcl/TclCmd/glob.htm