4

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

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

所以请帮忙。

4

2 回答 2

2

您可以在 Perl 中使用glob.

此外,/e在这种情况下,替换上的 ("eval") 修饰符是错误的。如果strict到位,它将导致Bareword not allowed错误,但如果没有它,它只是一个无操作,ABCD评估为'ABCD'.

尝试这个

perl -i.bak -pe "BEGIN{@ARGV = map glob, @ARGV} s/Hello/ABCD/g" C:\Users\Jamimb\Desktop\Test\*.tmp
于 2013-07-15T10:58:40.477 回答
0

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

for %f in (C:\Users\Jamimb\Desktop\Test\*.tmp) do perl.exe -pi.bak -e "s/Hello/ABCD/g" %f
于 2013-07-15T10:56:36.250 回答