You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TCL glob中反向匹配排除含Prot的文件?

解决Tcl glob排除含特定字符串文件的问题

你可以用两种方式实现需求:

方法1:直接用glob的否定模式

Tcl 8.5及以上版本的glob支持用!开头的模式来排除匹配项,直接把排除规则加到glob命令里就行:

set SASA_LIG_PROCESSED [lsort [glob -directory "${WORKDIR}/" -type f -tails *SASA* !*Prot*]]

这个命令先匹配所有包含SASA的文件,再排除其中包含Prot的文件,最后排序输出。

方法2:用lfilter过滤结果

如果你的Tcl版本较低不支持glob的否定模式,可以先获取所有目标文件,再用lfilter过滤掉含Prot的项:

# 先获取所有带SASA的文件
set all_sasa_files [lsort [glob -directory "${WORKDIR}/" -type f -tails *SASA*]]
# 过滤掉包含Prot的文件
set SASA_LIG_PROCESSED [lfilter $all_sasa_files {![string match "*Prot*" $_]}]

为什么你之前的规则无效?

Tcl的glob只支持简单通配符(*匹配任意字符、?匹配单个字符),不支持Perl正则里的否定前瞻语法(?!),所以你写的SASA*_?!Prot_*这种规则在Tcl里不生效。

内容的提问来源于stack exchange,提问作者Nikola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 17:13:13