This repository has been archived on 2019-12-04. You can view files and clone it, but cannot push or open issues or pull requests.
simple-audiotools/fixname

76 lines
2.4 KiB
Perl
Executable File

#!/usr/bin/perl
#
# File Name Fixer
# usage: fixname <files>
#
# Renames files to comply with darkside's arbitrary standard
#
# This is darkside's standard:
# 1) all letters are lowercase
# 2) Whitespace becomes underscore
# 3) Never more than one consecutive underscore
# 4) No underscores flanking dashes
# 4) Never more than one consecutive dash
#
# ChangeLog:
# 0.2: Made everything more robust - better at multiple spaces and special
# characters now. Also now renumbering along with ds-audiotools
# 0.1.4: Added -o option, which prints to stdout instead of renaming the file
# 0.1.3: Added version variable
# 0.1.2: Added help message
# 0.1.1: Made code compile and run, no known bugs
# 0.1: Switched code to perl with regular expressions
# 0.0.4: Minor bugs fixed, __ was becoming - instead of _
# 0.0.3: Minor bugs fixed, code improved
# 0.0.2: Takes command-line arguments instead of parsing entire directory
# 0.0.1: basic code in place
$VERSION = "0.2.3";
$HELP_MSG = "# Filename fixer v$VERSION\n\tusage: fixname <files>\n\t fixname -o \"name\"\n";
die $HELP_MSG if ($#ARGV < 0);
foreach (@ARGV)
{
die $HELP_MSG if (/^(--help)|(-h)$/);
if (/^-o$/)
{
$toStdOut = true;
}
}
@ARGV = grep(!/^-o$/, @ARGV) if ($toStdOut);
foreach (@ARGV)
{
my $oldname = $_;
s/(.*)/lc($1)/e; # Lowercase it
s/[^\w\s\.-]//g; # Remove odd characters
s/\s/_/g; # Change whitespace to _
s/_+/_/g; # Squash multiple spaces
s/^_*//; # Remove leading space
s/_*$//; # Remove trailing space
s/_*(-|\.)_*/$1/g; # Remove space flanking a - or .
if ($toStdOut) { print; }
else { system('mv', $oldname, $_); }
}
# Copyright (c) 2004 - 2007 John Wiggins
#
# 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA