【问题标题】:perl replace multi files in. a folderperl 替换文件夹中的多个文件
【发布时间】: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 命令行上的命令

标签: perl wildcard


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    • 2016-09-07
    • 2022-01-25
    • 1970-01-01
    • 2015-07-19
    • 2016-04-26
    • 2014-02-28
    相关资源
    最近更新 更多