2013-12-18 115 views

回答

2
perl -e 'rename $_, "PRE_$_" for <*>' 

PRE_是您的前綴。

2

如果你是在Unix十歲上下的操作系統,並具有rename實用工具,自帶安裝的perl,你可以這樣做:

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" 
} 

Ps。如果您在包含文件的目錄中運行它,上面的代碼可以正常工作。如果你想從其他目錄運行它,你可以把一個明確的

chdir 'C:/Mydir/testdir' or die "Could not change to target directory: $!\n"; 

在它前面,或改變水珠到<C:/Mydir/testdir/*.DAT>和正則表達式替換到s/^(.*[\\\/])(.*)\.DAT$/$1ABC.SOME_STUFF_$2.mbin/s

+0

我想在一個特定目錄中搜​​索C:\ Mydir \ testdir \並嘗試搜索擴展名爲.dat文件的所有文件,然後嘗試在已經存在的文件名中添加前綴名稱。 – user3115515

相關問題