#!/usr/bin/env perl
# torn - Musical files renaming with russian language transliteration
-# Copyright (C) 2007-2020 Sergey Matveev (stargrave@stargrave.org)
+# Copyright (C) 2007-2022 Sergey Matveev (stargrave@stargrave.org)
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
=head1 USAGE
Simply run this script in directory where you want files and/or
-directorires to be renamed.
+directories to be renamed. Directories are not transliterated by
+default, but you can use FORCE_DIR=1 environment variable.
=head1 OVERVIEW
binmode STDOUT, ":utf8";
-my $VERSION = "0.9";
+my $VERSION = "0.10";
my $src;
my $dst;
my $src_filename;
if ($#ARGV >= 0) {
- print "torn version $VERSION, Copyright (C) 2007-2020 Sergey Matveev
+ print "torn version $VERSION, Copyright (C) 2007-2022 Sergey Matveev
torn comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.\n
Usage: just run inside the directory. Look for POD inside the script itself.\n";
foreach (sort readdir DIR) {
# Skip directory itself
next if /^\.{1,2}$/;
+ next if -d and not $ENV{FORCE_DIR};
$src_filename = $_;
$src = decode "utf-8", $src_filename;
$dst =~ s/Ю/Ju/g;
# Lowercase file extensions
- if($dst =~ /^(.*)\.([^\.]+)$/){
+ if ($dst =~ /^(.*)\.([^\.]+)$/) {
$dst = $1 . "." . lc $2;
};
# Change looking of track numbers
- # And renaming itself
- if($dst =~ /^(\d+)\-(.+)$/){
- print "$src -> $1.$2\n";
- rename $src_filename, "$1.$2";
- } else {
- print "$src -> $dst\n";
- rename $src_filename, $dst;
+ if ($dst =~ /^(\d+)[-.]_*(.+)$/) {
+ $dst = "$1.$2";
};
+
+ next if ($src_filename eq $dst);
+ print "$src -> $dst\n";
+ die "\"$dst\" exists" if -e $dst;
+ rename $src_filename, $dst;
};
closedir DIR;