0
我使用這個代碼來處理我的文件夾和文件有兩個替補:用於與擴展文件名的文件夾名稱僅
「子文件」
「子文件夾」只有Perl的重命名文件夾和文件文件::查找
但我意識到「子文件夾」在重命名過程中與我的文件擴展混淆。
如何區分進程彼此,或者什麼是告訴「子文件夾」重命名「名稱」沒有擴展名和「子文件」重命名「名稱」與externsion的智能方式?
find(\&folders, $dir_source);
sub folders {
my $fh = $File::Find::dir;
my $artist = (File::Spec->splitdir($fh))[3];
if (-d $fh) {
my $folder_name = $_;
# some substitution
rename $folder_name, $_;
}
}
find(\&files, $dir_source);
sub files {
/\.\w+$/ or return;
my $fn = $File::Find::name;
my ($genre, $artist, $boxset, $album, $disc);
if ($fn =~ /Singles/ or $fn =~ /Box Set/) {
($genre, $artist, $boxset, $album, $disc) = (File::Spec->splitdir($fn))[2..6];
}
else {
($genre, $artist, $album, $disc) = (File::Spec->splitdir($fn))[2..5];
}
if (-e $fn) {
my $file_name = $_;
# some substitution
rename $file_name, $_;
}
}
你的建議是真棒毫無疑問。我只有很難通過幾個 my $ new; ($ new = $ _)=〜s /某事/其他/返回; ,因爲它只適用於一個。 – thebourneid 2010-06-25 16:29:08
不確定你的意思。你想對同一個變量做幾個s ///,如果它們中的任何一個改變了值,就重命名它們? – runrig 2010-06-25 16:36:29
是的。在我的完整代碼中,我有10-15秒///,並且如果有任何人在ANYWHERE遇到任何文件夾 - 重命名。但是我猜想當添加「或者返回」時 - 如果沒有滿足要求,它會停止處理。我對麼? – thebourneid 2010-06-25 16:43:32