user3168352
user3168352

Reputation: 33

perl replace multi files in. a folder

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

Upvotes: 2

Views: 91

Answers (2)

Miller
Miller

Reputation: 35198

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

Upvotes: 1

wilx
wilx

Reputation: 18228

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 | % { "$_" }).

Upvotes: 2

Related Questions