【问题标题】:How to `rm -rf *` in TCL如何在 TCL 中使用 rm -rf *
【发布时间】:2019-01-18 14:03:18
【问题描述】:

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

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

应该可以。 但是

file delete -force -- [glob *]

什么都不做。 这有什么问题?

【问题讨论】:

    标签: tcl delete-file vivado


    【解决方案1】:

    做到这一点

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

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

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

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

    【讨论】:

    【解决方案2】:

    您需要考虑的其他事项:

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

    【讨论】:

      猜你喜欢
      • 2011-02-28
      • 2021-04-09
      • 2015-01-09
      • 2022-01-17
      • 1970-01-01
      • 2013-01-10
      • 2019-11-22
      • 2012-05-13
      • 1970-01-01
      相关资源
      最近更新 更多