rendered paste body#!/usr/bin/env zsh
# Rename MP3 scene releases.
# TB/SH-090906A GPL
# Avoid breaking in empty places.
#
setopt nullglob
# Rename folders.
#
function do_folders () {
for old in *; do
if [ -f "$old" ]; then do_files "$old"
elif [ -d "$old" ]; then
# Specify renaming rules.
#
new=`echo "$old" | tr "[:upper:]" "[:lower:]"`
new=`echo "$new" | sed -e "s/ /_/g" \
-e "s/\./_/g" \
-e "s/[_-][()]/-/g" \
-e "s/[()][-_]/-/g" \
-e "s/[_-]\{2,3\}/-/g" \
-e "s/[_-]$//g" \
-e "s/[[]]//g" \
-e "s/---*/-/g" \
-e "s/___*/_/g" \
-e "s/,//g" \
-e "s/'//g" \
-e "s/!//g" \
-e "s/&/and/g"`
if [ "$old" != "$new" ]; then mv "$old" "$new"; fi
echo "Renaming $old"
cd "$new"; do_folders "$new"; cd ..
else echo "Directory invalid."; fi
done
}
# Rename files.
#
function do_files () {
old=$1
new=`echo "$old" | tr "[:upper:]" "[:lower:]"`
if [[ "$old" == *.* ]]; then
# Clear away extension.
#
extension=${new##*.}
new=${new%.*}
# Specify renaming rules.
#
new=`echo "$new" | sed -e "s/ /_/g" \
-e "s/\./_/g" \
-e "s/[_-][()]/-/g" \
-e "s/[()][-_]/-/g" \
-e "s/[_-]\{2,3\}/-/g" \
-e "s/[_-]$//g" \
-e "s/[[]]//g" \
-e "s/---*/-/g" \
-e "s/___*/_/g" \
-e "s/,//g" \
-e "s/'//g" \
-e "s/!//g" \
-e "s/&/and/g"`
new=`echo "$new" | sed -e "s/^\([0-9]\{2,3\}\)_/\1-/g"`
# Add back extension.
#
new=`echo "$new"."$extension"`
mv "$old" "$new"; fi
}
do_folders .