我是新來的Perl。我想將.dat文件重命名爲其他擴展名,併爲其添加更多擴展名
我有幾百個文件IND1234-238772-20111010103010.DAT
和類似格式 的現在,我想所有的文件重命名爲新的格式:
ABC.SOME_STUFF_IND1234-238772-20111010103010.mbin
,如:addsome_ext<old_extension>.mbin
任何幫助,將不勝感激
我是新來的Perl。我想將.dat文件重命名爲其他擴展名,併爲其添加更多擴展名
我有幾百個文件IND1234-238772-20111010103010.DAT
和類似格式 的現在,我想所有的文件重命名爲新的格式:
ABC.SOME_STUFF_IND1234-238772-20111010103010.mbin
,如:addsome_ext<old_extension>.mbin
任何幫助,將不勝感激
perl -e 'rename $_, "PRE_$_" for <*>'
PRE_是您的前綴。
如果你是在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
。
我想在一個特定目錄中搜索C:\ Mydir \ testdir \並嘗試搜索擴展名爲.dat文件的所有文件,然後嘗試在已經存在的文件名中添加前綴名稱。 – user3115515
您是否嘗試過使用'rename'命令? '人重命名' – TLP