Tcl 如何检查目录中是否存在多个文件

Tcl 如何检查目录中是否存在多个文件,tcl,tk,Tcl,Tk,我想检查一个目录中是否存在多个具有相同扩展名的文件,如果找到,请执行该操作。由于file exists只接受一个参数作为文件名,它似乎对我不起作用 我尝试了以下代码 set filenames [glob *.cpf] if {[file exists $filenames == 1 } { file delete {*} [glob *.cpf] } 此代码没有删除目录中的文件,例如:a.cp、b.cpf,并且似乎跳过了此步骤。 如果我遗漏了什么,请提出建议 D

我想检查一个目录中是否存在多个具有相同扩展名的文件,如果找到,请执行该操作。由于file exists只接受一个参数作为文件名,它似乎对我不起作用

我尝试了以下代码

set filenames [glob *.cpf]

      if {[file exists $filenames == 1 }  {
      file delete {*} [glob *.cpf]
} 
此代码没有删除目录中的文件,例如:a.cp、b.cpf,并且似乎跳过了此步骤。 如果我遗漏了什么,请提出建议


Dan

您可能需要检查收到的文件名的长度,并根据需要循环(如果需要)和删除

set filenames [glob -nocomplain *.cpf]
# If length of 'filenames' is more than 1 means, multiple files avaialble
if {[llength $filenames]>1} {
    # Your file operations
    foreach fname $filenames    {
        # Loop through the file
    }
}
如果没有匹配模式,则标志
-nocompain
将帮助我们防止出现任何错误消息


Reference:

IMHO,您不需要检查
文件是否存在
本身,因为
glob
返回的名称列表只不过是根据给定模式存在于给定目录中的实际文件。您好,Dinesh,我需要首先检查文件是否存在,然后执行文件删除,另一个明智的做法是运行代码主体(此处不粘贴)。