#!/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 .