$ cat ren.pl
#!/usr/bin/env perl
use strict;
use warnings;
use File::Basename;

my @files = glob('*.mp3 *.m4a');

my %seen;

for my $old (@files) {
my ($name, $dir, $ext) = fileparse($old, qr/\.[^.]*/);

my $new = $name;

чистка

$new =~ s/\s*\([^)]*\)\s*/ /g;
$new =~ s/\s*\[[^]]*\]\s*/ /g;
$new =~ s/ {2,}/ /g;
$new =~ s/^ //;
$new =~ s/ $//;

next if $new eq $name;

my $target = $new . $ext;

my $base = $new;
my $i = 1;
while (-e $target || $seen{$target}) {
$target = $base . "_" . $i . $ext;
$i++;
}
$seen{$target} = 1;

print "$old -> $target\n";
rename $old, $target or warn "cannot rename $old to $target: $!\n";
}

[file-name 000302_2025-12-03_10-02-41.txt]