Уроки 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" Юрий |