我是perl的新手。
我有几百个文件IND1234-238772-20111010103010.DAT
和类似的格式
现在,我想将所有文件重命名为新格式:
ABC.SOME_STUFF_IND1234-238772-20111010103010.mbin
喜欢:addsome_ext<old_extension>.mbin
任何帮助将不胜感激
答案 0 :(得分:2)
perl -e 'rename $_, "PRE_$_" for <*>'
以PRE_为您的前缀。
答案 1 :(得分:2)
如果您使用的是Unix-ish操作系统,并且安装了perl附带的rename实用程序,您可以这样做:
rename 's/^(.*)\.DAT$/ABC.SOME_STUFF_$1.mbin/s' *.DAT
或者,您可以使用纯Perl轻松完成此操作:
foreach my $old (<*.DAT>) {
my $new = $old;
$new =~ s/^(.*)\.DAT$/ABC.SOME_STUFF_$1.mbin/s or next;
if (-e $new) {
warn "Not renaming $old to $new, target file exists!\n";
next;
}
rename $old, $new or warn "Error renaming $old to $new: $!\n"
}
聚苯乙烯。如果您在包含文件的目录中运行它,上面的代码将起作用。如果你想从其他目录运行它,你可以放一个显式的
chdir 'C:/Mydir/testdir' or die "Could not change to target directory: $!\n";
在其前面,或将glob更改为<C:/Mydir/testdir/*.DAT>
,将regexp替换为s/^(.*[\\\/])(.*)\.DAT$/$1ABC.SOME_STUFF_$2.mbin/s
。