如何在 TCL 中 `rm -rf *`
How to `rm -rf *` in TCL
我想使用 TCL 删除目录中的所有文件。 (我在 Win 10 下使用 Xilinx Vivado 的 TCL 控制台。)我发现 TCL documentation
file delete ?-force? ?- -? pathname ?pathname ... ?
应该可以。
但是
file delete -force -- [glob *]
什么都不做。
这有什么问题吗?
做到这一点
file delete -force -- {*}[glob *]
... 这样 [glob]
返回的路径名就变成了 [file delete]
的多个参数(使用扩展运算符 {*}
),而不是一个参数代表一个路径名称列表(由 [file delete]
读取为一个非常复杂的文件路径)。
或者,在早于 8.5 的 Tcl 上,使用显式循环:
foreach path [glob *] {
file delete -force -- $path
}
您需要考虑的其他事项:
- 您是否需要担心删除文件而不是目录?考虑 the
glob
command 的 -type
选项。
- 如果您需要递归工作,请不要重新发明轮子并使用 tcllib。
fileutil::traverse
and fileutil
个包是相关的。
我想使用 TCL 删除目录中的所有文件。 (我在 Win 10 下使用 Xilinx Vivado 的 TCL 控制台。)我发现 TCL documentation
file delete ?-force? ?- -? pathname ?pathname ... ?
应该可以。 但是
file delete -force -- [glob *]
什么都不做。 这有什么问题吗?
做到这一点
file delete -force -- {*}[glob *]
... 这样 [glob]
返回的路径名就变成了 [file delete]
的多个参数(使用扩展运算符 {*}
),而不是一个参数代表一个路径名称列表(由 [file delete]
读取为一个非常复杂的文件路径)。
或者,在早于 8.5 的 Tcl 上,使用显式循环:
foreach path [glob *] {
file delete -force -- $path
}
您需要考虑的其他事项:
- 您是否需要担心删除文件而不是目录?考虑 the
glob
command 的-type
选项。 - 如果您需要递归工作,请不要重新发明轮子并使用 tcllib。
fileutil::traverse
andfileutil
个包是相关的。