2

This works

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

But this doesnt work for all xmls in the folder

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

Keep getting error cannot open *.xml

Have tried all sorts of things and recognise the * as a wildcard

wilx
  • 17,697
  • 6
  • 59
  • 114

2 Answers2

2

You are seeing the cannot open *.xml because, unlike Unix shells, the Windows CMD shell does not expand wild cards.

If you want to stay with cmd, you can form a for loop over files or you could switch to something more powerful like PowerShell and try this (untested): Perl -pi.bak -e "s/\\t/\t/g;" (Get-ChildItem *.xml | % { "$_" }).

Community
  • 1
  • 1
wilx
  • 17,697
  • 6
  • 59
  • 114
1

Unfortunately, windows cmd does not have the same power to expand wildcards as unix shells.

You can work around this though, by telling perl that you want to expand @ARGV using a glob

perl -i.bak -pe "BEGIN {@ARGV = map glob, @ARGV} s/\\t/\t/g;" *.xml
Miller
  • 34,962
  • 4
  • 39
  • 60