我有一个目录,其中包含一些文件和配置,现在我必须获取此目录的内容,并且必须使用TCL代码运行脚本。我可以编写用于从目录中获取内容的脚本。
答案 0 :(得分:1)
glob 命令返回与模式匹配的文件的名称
(Programs) 1 % glob *.bat
dl.bat get8.bat rfts.bat sdx.bat update.bat ws.bat zrm.bat
答案 1 :(得分:0)
打印请求目录的内容的程序
proc dir_content {dir_name} {
puts [glob ${dir_name}/*]
}
dir_content [file normalize some_dir]
答案 2 :(得分:0)
glob
命令列出目录的内容。它需要一种文件模式(或许多模式)来寻找,它还需要许多选项。我们将回到那些人那里。
从一个简单的例子开始,这是最简单的。让我们列出当前目录中的Tcl源文件:
glob *.tcl
该列表以随机顺序返回(它不是真正随机,但它取决于操作系统和文件系统,并且不是&t; 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
,这样当您列出一个空目录时,您只需获得一个空列表。 (由于历史原因,如果没有这个选项,你最终会得到一个 - trappable - 否则结果是空的错误。)
set allFilesInDir [glob -directory $theDir -nocomplain *]
还有更多选项(例如,使用-type
按目录条目类型进行过滤,使用-tails
进行文件名修整),但它们相当复杂,而且您通常不会使用{{1}}。需要它们。你现在已经足够危险......