【发布时间】:2010-09-19 21:43:35
【问题描述】:
我一直在尝试编写一个 Perl 脚本来替换我项目的所有源文件中的一些文本。我需要类似的东西:
perl -p -i.bak -e "s/thisgoesout/thisgoesin/gi" *.{cs,aspx,ascx}
但这会解析所有目录的文件递归。
我刚刚开始了一个脚本:
use File::Find::Rule;
use strict;
my @files = (File::Find::Rule->file()->name('*.cs','*.aspx','*.ascx')->in('.'));
foreach my $f (@files){
if ($f =~ s/thisgoesout/thisgoesin/gi) {
# In-place file editing, or something like that
}
}
但现在我被困住了。有没有使用 Perl 编辑所有文件的简单方法?
请注意,我不需要为每个修改过的文件保留一份副本;我把他们都颠覆了 =)
更新:我在Cygwin 上试过这个,
perl -p -i.bak -e "s/thisgoesout/thisgoesin/gi" {*,*/*,*/*/*}.{cs,aspx,ascx
但看起来我的参数列表已爆炸到允许的最大大小。事实上,我在 Cygwin 上遇到了非常奇怪的错误......
【问题讨论】:
-
您可能应该注意到您正在运行 Windows。
标签: perl search command-line replace bulk