在Windows中的perl中替换所有文件中的字符串

时间:2013-07-15 10:42:05

标签: regex windows perl

我想用Windows中所有文件中的另一个字符串替换字符串。 所有扩展名相同的文件。 我尝试使用perl one liner命令,但似乎“*”不适用于Windows。

perl.exe -pi.bak -e "s/Hello/ABCD/ge" C:\Users\Jamimb\Desktop\Test\*.tmp

所以请帮忙。

2 个答案:

答案 0 :(得分:2)

您可以使用glob从Perl中显式扩展命令行参数。

此外,替换中的/e(“eval”)修饰符在此实例中是错误的。如果strict到位,则会导致 Bareword不允许错误,但如果没有,则只是一个no-op,因为ABCD的评估为'ABCD'。< / p>

试试这个

perl -i.bak -pe "BEGIN{@ARGV = map glob, @ARGV} s/Hello/ABCD/g" C:\Users\Jamimb\Desktop\Test\*.tmp

答案 1 :(得分:0)

你可以尝试这个(也许):

for %f in (C:\Users\Jamimb\Desktop\Test\*.tmp) do perl.exe -pi.bak -e "s/Hello/ABCD/g" %f