#!/bin/bash DEBUG=FALSE SIMULATE=FALSE if [ "$1" == "-s" ]; then SIMULATE=TRUE shift fi if [ "$2" == "" ]; then echo "Usage: $0 [options] [ .. ] Renames files using passed to sed OPTIONS -s simulate only EXAMPLE PATTERNS 's/[^A-Za-z0-9\-_\.]/_/g' Remove strange characters from files, replacing with _ 's/[^A-Za-z0-9\-_\.]\{1,\}/_/g' Renames all *groups* of strange characters with _ " exit; fi PATTERN=$1 shift echo "----------------------------------------------------------------" echo -e " \033[1;37mSTARTING BULK RENAME OF FILES USING REGEXPs\033[0m" echo "----------------------------------------------------------------" echo " PATTERN: $PATTERN" echo "----------------------------------------------------------------" echo for filename in "$@"; do newfilename="$( echo "$filename" | sed "$PATTERN" )" if [ "$filename" != "$newfilename" ]; then echo -e "\033[1;31m- OLDFILE:\033[0m $filename" echo -e "\033[1;34m+ NEWFILE:\033[0m $newfilename" if [ "$SIMULATE" == "FALSE" ]; then mv -i "$filename" "$newfilename" fi echo else if [ "$DEBUG" == "TRUE" ]; then echo -e "\033[1;33mUNCHANGED:\033[0m $filename" echo fi fi done