Replace TCL onliner:替换文件名中的字符串

Replace TCL onliner:替换文件名中的字符串,replace,tcl,Replace,Tcl,是否有一种方法可以使用TCL将文件名中的字符串替换为oneliner。例如,对于perl,它将是: 档案: testA1.txt testA2.txt testA3.txt 单行线 perl -e "while(<test*>) {($new=$_) =~ s/A/B/; rename $_, $new}" 一般来说,TCL是否适合OneLiner?我没有像在Perl和Powershell中一样在TCL的NetOneLiner中找到 操作系统:Windows 7我能想到的最简单的

是否有一种方法可以使用TCL将文件名中的字符串替换为oneliner。例如,对于perl,它将是:

档案:

testA1.txt
testA2.txt
testA3.txt
单行线

perl -e "while(<test*>) {($new=$_) =~ s/A/B/; rename $_, $new}"
一般来说,TCL是否适合OneLiner?我没有像在Perl和Powershell中一样在TCL的NetOneLiner中找到


操作系统:Windows 7

我能想到的最简单的方法是:

foreach f [glob test*] {file rename $f [string map {A B} $f]}

不过,和任何语言一样,一句话通常用于快速、肮脏的事情或娱乐。在正确的代码中找不到任何东西。

很少有人被鼓励在Tcl中编写一行程序;作为一个社区,我们倾向于强调代码的持久性,而不是尽可能使用最少的字符数。谢谢。但是我如何在dos终端上添加它呢?我尝试了
>tclsh foreach f[glob test*]{file rename$f[string map{ab}$f]}
。这就是为什么tcl不适合OneLiner:您必须将代码输入Tcsh的stdin:
echo'foreach f[glob test*]{file rename$f[string map{A B}$f]}Tlsh
十年前(!),但它从未流行起来。我真的从来没有使用过它。@giordano您可以在不使用admin的情况下安装ActivePerl,请参阅@giordano Windows的echo builtin非常有限,并且不遵循与命令解释器其余部分相同的引用规则。例如,
echo”“
输出文本字符串
,但写入
tclsh“foo\”条“
将字符串
foo”条作为一个参数传递给tclsh。无法回显
|
字符并将其通过管道传输到具有Windows回显内置功能的程序中。
foreach f [glob test*] {file rename $f [string map {A B} $f]}