我想将.dat文件重命名为其他扩展名,并为其添加更多扩展名

时间:2013-12-18 14:01:37

标签: perl

我是perl的新手。

我有几百个文件IND1234-238772-20111010103010.DAT和类似的格式 现在,我想将所有文件重命名为新格式:

ABC.SOME_STUFF_IND1234-238772-20111010103010.mbin

喜欢:addsome_ext<old_extension>.mbin

任何帮助将不胜感激

2 个答案:

答案 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