perl替换。文件夹中的多个文件

时间:2014-04-17 09:39:10

标签: perl wildcard

这有效

Perl -pi.bak -e "s/\\t/\t/g;" one.xml

但是这对文件夹

中的所有xml都不起作用
Perl -pi.bak -e "s/\\t/\t/g;" *.xml

不断收到错误cannot open *.xml

尝试了各种各样的事情并将*识别为通配符

2 个答案:

答案 0 :(得分:2)

您正在看cannot open *.xml,因为与Unix shell不同,Windows CMD shell不会扩展通配符。

如果你想留在cmd,你可以形成一个for loop over files,或者你可以切换到像PowerShell这样更强大的东西,试试这个(未经测试):Perl -pi.bak -e "s/\\t/\t/g;" (Get-ChildItem *.xml | % { "$_" })

答案 1 :(得分:1)

不幸的是,windows cmd没有像unix shell那样扩展通配符的能力。

你可以解决这个问题,告诉perl你要使用glob展开@ARGV

perl -i.bak -pe "BEGIN {@ARGV = map glob, @ARGV} s/\\t/\t/g;" *.xml