假设路径 x/y/z 有 5 个目录,即 1.1、1.2、1.3、1.4、1.5。现在我只想打印大于 1.1 的目录名称。如果在另一个路径 a/b/c 中存在相同的目录,但缺少 1.2 目录,那么它应该打印 1.3,因为下一个目录高于 1.1?如何在 tclsh 中做到这一点???
问问题
90 次
1 回答
0
我假设您在这里谈论文件名?目录?
要获取与此类模式匹配的位置中的目录列表,您可以使用:
# d for “directory”
set names [glob -directory a/b/c -type d {[0-9]*.[0-9]*}]
这将是随机顺序(嗯,它取决于操作系统中的大量因素,所以假装它是随机的要简单得多!)并且可能会有一些误报。我们需要过滤和排序。幸运的是,我们必须package vsatisfies
进行解析。
set filtered [lmap name $names {
try {
if {[package vsatisfies [file tail $name] 1.1]} {
set name
} else continue
} on error {} continue
}]
# You'll find that dictionary sorting does the Right Thing in this case
set sorted [lsort -dictionary $filtered]
现在剩下的就是打印列表中的元素。其中最大的项目是[lindex $sorted end]
……</p>
于 2021-08-02T08:06:04.910 回答