#!/bin/sh #AUTHOR: JT Moree #LICENSE: This code is in the public domain PROG=`basename "$0"` VERSION='0.1' BUILD='$Id$' ARGS= usage() { if [ "$PROG" = "ext2lc" ] ; then C=lower else C=upper fi cat << FOO $PROG - change file extensions to ${C}case Usage: $PROG [options] file1 file2 ... -f force overwrite of files (will not prompt by default) -h help -i prompt before overwrite -S skip warning -V Verbose -v version FOO if [ "$PROG" = "ext2lc" ] ; then cat << FOO File extensions such as '.JPG' and '. A BC' will be lowercased (ie. '.jpg' and '. a bc'). FOO else cat << FOO File extensions such as '.jpg' and '. a bc' will be uppercased (ie. '.JPG' and '. A BC'). FOO fi } COUNT=0 #count up args to shift off later while getopts fhiSVvx OPTION do COUNT=$(($COUNT + 1)) case "$OPTION" in f) FORCE="-f" ;; h) usage ; exit 1 ;; i) INTERACTIVE="-i" ;; S) SKIP=y ;; V) VERBOSE=y ; ;; v) echo $0 Version: $VERSION; exit 1 ;; x) set -x ; ;; *) echo Invalid Option >&2 usage exit 1 ;; esac done shift $COUNT if [ ${#@} -lt 1 ] ; then echo "No input files given" >&2 usage exit 1 fi if [ -z "$SKIP" ] ; then cat << BAR ######################################################### WARNING! This program will rename your files!!! Please make backup copies first. Press Ctrl + C now to quit. Enter to continue ######################################################### BAR read FOO fi while [ $# -gt 0 ]; do FILE=$1 shift 1 if [ ! -r "$FILE" ] ; then echo "Warning: '$FILE' is not valid. Skipping. . ." >&2 else EXT=${FILE##*.} # EXT=`echo $file | sed 's/^\(.*\.\)\(.*\)$/\2/g'` if [ -z "$EXT" ] || [ "$FILE" = "$EXT" ] ; then echo "$FILE does not have an extention. Skipping . . ." >&2 else NAME=`basename "$FILE" ".$EXT"` if [ -z "$NAME" ] ; then echo "Error. Could not parse the name portion of $FILE" >&2 else #if in lower mode if [ "$PROG" = "ext2lc" ] ; then CASE=`echo "$EXT" | tr '[A-Z]' '[a-z]'` else CASE=`echo "$EXT" | tr '[a-z]' '[A-Z]'` fi if [ "$FILE" != "$NAME.$CASE" ] ; then #skip if file is same if [ -f "$NAME.$CASE" ] && [ -z "$FORCE" ] ; then #file already exists echo "File $NAME.$CASE already exists. Skipping $FILE . . ." >&2 else mv -v $FORCE $INTERACTIVE "$FILE" "$NAME.$CASE" fi fi fi fi fi done