Уроки Tcl
#25: Информация о файле - file, glob |
Есть две команды, возвращающие информацию о файле, glob и file.
Команда glob предоставляет доступ к именам файлов в папке. Она использует имена аналогично ls или dir, возвращает список имён, которые соответствуют шаблону.
File обеспечивает два набора функциональности:
С помощью этих двух команд программа может получить всю необходимую информацию. Синтаксис команды glob следующий:
| glob ?ключи? шаблон ?шаблонN? | |
| Возвращает список имен файлов,
которые соответствуют шаблону или шаблонуN. Ключи начинаются с "-" и могут устанавливать некоторые параметры выполнения: -nocomplain - Позволяет glob возвращать пустой список в случае ошибки. Без этого ключа будт сгенерировано сообщение об ошибке. --(два минуса) - Обозначает конец ключей. Следующий аргумент будет воспринят как шаблон, даже если начинается с минуса ("-"). Шаблон следует тем же правилам globbing, что и команда string match со следующими иключениями:
Помните, что имена файлов, которые соответствуют шаблону не сортируются. | |
В примере показан способ использования этих команд для построения таблицы имён файлов и папок.
В качестве значений переменных ail1 и ail2 задайте какие-нибудь шаблоны файлов.
;# Собираем имена файлов...
set ail1 [glob c:/windows/system32/w*.dll]
set ail2 [glob c:/windows/win*.exe]
;# Задание формата для вывода списка
set fmt "%-17s %13s %-7s"
puts "[format "$fmt Комментарий" "Папка" "Имя" "Тип"]"
;# Цикл, проходящий по всем значениям, собранным glob
;# Для определения размеров и типов
;# Вывод результатов
foreach name [concat $ail1 $ail2] {
;# Разделение имени на части для вывода:
set dir [file dirname $name]
set filename [file tail $name]
;# Определения типа
set type [file type $name]
;# Вывод полученных результатов
puts -nonewline "[format $fmt $dir $filename $type]"
;# В зависимости от типа записи вывод размера (для файла)
;# или имени адресуемого файла (для символьной ссылки)
if {[string match [file type $name] "link"]} {
puts " указывает на: [file readlink $name]"
}
if {[string match [file type $name] "file"]} {
puts " размер: [file size $name] байт"
}
}
|
| Горбачев "Yurez" Юрий |