perl 替换文件夹中的多个文件
Posted
技术标签:
【中文标题】perl 替换文件夹中的多个文件【英文标题】:perl replace multi files in. a folder 【发布时间】:2014-06-01 12:24:04 【问题描述】:这行得通
Perl -pi.bak -e "s/\\t/\t/g;" one.xml
但这不适用于文件夹中的所有 xmls
Perl -pi.bak -e "s/\\t/\t/g;" *.xml
不断收到错误cannot open *.xml
尝试了各种方法并将*
识别为通配符
【问题讨论】:
让我猜猜,你是在 Windows 上工作吗? 是的,在 xml 所在的文件夹中运行 windows 命令行上的命令 【参考方案1】:您看到的是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 | % "$_" )
。
【讨论】:
好吧,这是有道理的。谢谢你【参考方案2】:不幸的是,windows cmd 没有与 unix shell 一样的扩展通配符的能力。
您可以通过告诉 perl 您想使用 glob
扩展 @ARGV
来解决此问题
perl -i.bak -pe "BEGIN @ARGV = map glob, @ARGV s/\\t/\t/g;" *.xml
【讨论】:
以上是关于perl 替换文件夹中的多个文件的主要内容,如果未能解决你的问题,请参考以下文章