如何在TCL中`rm -rf *`

时间:2019-01-18 14:03:19

标签: tcl delete-file vivado

我想使用TCL删除目录中的所有文件。 (我在Win 10下使用Xilinx Vivado的TCL控制台。)我在TCL documentation中发现

file delete ?-force? ?- -? pathname ?pathname ... ?

应该工作。 但是

file delete -force -- [glob *]

什么都不做。 怎么了?

2 个答案:

答案 0 :(得分:5)

做到这一点

  file delete -force -- {*}[glob *]

...,以便将[glob]返回的路径名转换为[file delete]的多个参数(使用扩展运算符{*}),而不是一个参数表示一个列表。路径名([file delete]作为一个非常复杂的文件路径)。

或者,在8.5之前的Tcl上,使用显式循环:

 foreach path [glob *] {
    file delete -force -- $path
 }

答案 1 :(得分:2)

您需要考虑的其他事项:

  1. 您是否需要担心删除文件而不是目录?考虑the glob command-type选项。
  2. 如果您需要递归工作,请不要重新发明轮子并使用tcllib。 fileutil::traversefileutil软件包是相关的。