Как `rm -rf *` в TCL - PullRequest
       47

Как `rm -rf *` в TCL

0 голосов
/ 18 января 2019

Я хочу удалить все файлы в каталоге, используя TCL.(Я использую консоль TCL Xilinx Vivado под Win 10.) В документации TCL я обнаружил, что

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

должно работать.Но

file delete -force -- [glob *]

ничего не делает.Что с этим не так?

Ответы [ 2 ]

0 голосов
/ 18 января 2019

Дополнительные вещи для вас рассмотреть:

  1. вам нужно беспокоиться об удалении файлов, а не каталогов? Рассмотрим вариант -type для команды glob .
  2. если вам нужно работать рекурсивно, не изобретайте колесо и используйте tcllib. Пакеты fileutil::traverse и fileutil актуальны.
0 голосов
/ 18 января 2019

Сделай это

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

... так что имена путей, возвращаемые [glob], превращаются в несколько аргументов [file delete] (с использованием оператора расширения {*}), а не в один аргумент, представляющий один список имен путей (читаемый [file delete] как один, очень сложный путь к файлу).

В качестве альтернативы, на Tcl старше 8.5, используйте явный цикл:

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