Я использую этот код для обработки моих папок и файлов с двумя подпрограммами:
"подпапки" только для имен папок
"подпапки" для имен файлов только с расширениями
НоЯ понял, что «подпапки» портятся с моими файлами с расширениями во время процесса переименования.
Как отличить процессы друг от друга или как разумно сказать «подпапкам» переименовать «имена» без расширения и «подфайлам» переименовать «имена» с расширением?
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, $_;
}
}