-1

假设路径 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 中做到这一点???

4

1 回答 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 回答