2014-07-16 1 views
0

У меня есть каталог, который содержит некоторые файлы и конфигурации, теперь мне нужно получить содержимое этого каталога и запустить сценарий с использованием кода TCL. Я могу написать скрипт для извлечения содержимого из каталога.Как получить содержимое из каталога с помощью инструмента командного языка

ответ

1

Глоб команда возвращает имена файлов, которые соответствуют модели

(Programs) 1 % glob *.bat 
dl.bat get8.bat rfts.bat sdx.bat update.bat ws.bat zrm.bat 
0

Процедура, которая печати содержимого запрашиваемого каталога

proc dir_content {dir_name} { 
    puts [glob ${dir_name}/*] 
} 

dir_content [file normalize some_dir] 
+0

Как узнать, где находится каталог и как он будет извлекать конкретный файл из определенного места. – vinu

+0

переменная @vinu some_dir должна содержать относительный или полный путь к каталогу. Если это относительный нормальный файл команды вернет уникальное нормализованное представление пути для объекта файловой системы (в этом случае полный путь к каталогу), а процедура dir_content будет печатать содержимое some_dir, когда каждый файл, предварительно помещенный полным путем в его родительский каталог –

0

glob команда выводит содержимое каталогов. Для поиска требуется шаблон файлов (или многих шаблонов), а также ряд вариантов. Мы вернемся к этим.

Проще всего начать с простого примера. Давайте перечислим исходные файлы Tcl в каталоге тока:

glob *.tcl 

Список возвращается в случайном порядке (это не действительно случайным, но это зависит от операционной системы и файловой системы и ISN» t легко предсказать, чтобы он мог быть случайным). Давайте получим все имена файлов и сохраним их в переменной:

set allFiles [glob *] 
# Really ought to use: 
# set allFiles [glob * .*] 
# to also pick up all Unix hidden files. 

Но как насчет перечисления других каталогов? Ну, безусловно, лучшим вариантом для этого является опция -directory.

set theDir "~/Documents/examples" 
set allFilesInDir [glob -directory $theDir *] 

(Вы можете поместить каталог в шаблоне - $theDir/* - но неприятности могут возникнуть для некоторых имен каталогов, если вы сделаете это, если у вас есть столкновение между шаблоном файла метасимволами и именем каталога Лучше. быть безопасным и использовать -directory.)

Другим вариантом, который действительно полезен, является -nocomplain, так что, когда вы указываете пустой каталог, вы получаете пустой список. (По историческим причинам, без этой опции вы будете в конечном итоге с - Перехватываемая - ошибка, когда результаты будут пустыми в противном случае.)

set allFilesInDir [glob -directory $theDir -nocomplain *] 

Там больше возможностей (например, фильтрация по каталогов типа записи с -type, имя файла обрезки с -tails), но они довольно сложны, и вам, как правило, они не нужны. У вас достаточно, чтобы быть достаточно опасным на данный момент ...

Смежные вопросы