Strawberry Perl-在Windows中搜索和替换

JDC*_*JDC 0 windows perl replace strawberry-perl

我正在尝试执行以下命令:

perl -pi -e 's,vaadin-element,color-picker,g' *.* demo/* test/* src/* theme/*/*
(遵循文件)

不幸的是,我得到的以下错误似乎使我使用的Pearl窗口分布与命令有关,因为出现以下错误:

Can't open *.*: Invalid argument.
Can't open demo/*: Invalid argument.
Can't open test/*: Invalid argument.
Can't open src/*: Invalid argument.
Can't open theme/*/*: Invalid argument.
Run Code Online (Sandbox Code Playgroud)

关于如何解决该问题的任何建议?先感谢您!

免责声明:我以前从未使用过Pearl,而且绝对没有经验。

ike*_*ami 5

在unix系统中,shell扩展glob并将文件名传递给程序。

$ perl -e'CORE::say for @ARGV' *
file1
file2
Run Code Online (Sandbox Code Playgroud)

另一方面,Windows Shell会按原样传递值,并根据需要将其留给程序以将其视为glob。

>perl -e"CORE::say for @ARGV" *
*
Run Code Online (Sandbox Code Playgroud)

您可以按照以下步骤进行通配:

>perl -MFile::DosGlob=glob -e"BEGIN { @ARGV = map glob, @ARGV } CORE::say for @ARGV" *
file1
file2
Run Code Online (Sandbox Code Playgroud)

BEGIN通常不需要该块,但是它将确保在使用时-n(并且由暗示-p)足够早的一次定位。

-MFile::DosGlob=glob品牌glob拥有类似Windows的语义。例如,它导致*.*匹配所有文件,即使它们不包含.

集成:

perl -i -MFile::DosGlob=glob -pe"BEGIN { @ARGV = map glob, @ARGV } s,vaadin-element,color-picker,g" *.* demo/* test/* src/* theme/*/*
Run Code Online (Sandbox Code Playgroud)