Path Case Script

From ProjectWiki
Revision as of 13:09, 30 November 2009 by 72.147.156.223 (Talk)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Script to change the case of all files and directories under a given path

Contents

What is this?

Quickie shell script to convert the case of all files within a given path to either uppercase or lowercase. This is often required when moving files between windows and unix style operating systems.

The scripts options are as follows:

usage ./pathChangeCase.sh PATH/TO/CHANGE/CASE [upper|lower] [verbose]
  • PATH/TO/CHANGE/CASE - the path you wish to change
  • upper|lower - either upper or lower here determines which way the case will be converted (default is upper)
  • verbose - if this argument exists will display to terminal what it is moving for verification


Shell Source Code

Copy and paste this to a file, chmod +x filename, and enjoys!

#!/bin/sh
 
path=$1;
direction=$2;
verbose=$3;
 
if [ "$path" = "" ]; then
	echo "usage $0 PATH/TO/CHANGE/CASE [upper|lower] [verbose]"
	echo
	echo "will change all files in path to either upper or lower case"
	exit
fi
 
if [ -e $path ]; then
	echo
else
	echo "$path is invalid?!"
	exit;
fi
 
if [ "$direction" = "lower" ]; then
	translateString="[A-Z] [a-z]"
else
	translateString="[a-z] [A-Z]"
fi
 
#make a regexp friendly path
repath=`echo $path | sed -e 's/\//\\\\\//g'`
 
echo "Do the directories first, so that the path doesn't change in $path ..."
for each in `find $path -type d`
do
justend=`echo $each | sed s/^$repath//`
newname=`echo $justend | tr $translateString`
if [ "$justend" != "$newname" ]; then
	mv $each $path$newname
	if [ "$verbose" != "" ]; then
		echo mv $each $path$newname
	fi
fi
done
echo "Now to the files in $path ..."
for eachf in `find $path -type f`
do
justend=`echo $eachf | sed s/^$repath//`
newnamef=`echo $justend | tr $translateString`
if [ "$justend" != "$newnamef" ]; then
	mv $eachf $path$newnamef
	if [ "$verbose" != "" ]; then
		echo mv $eachf $path$newnamef
	fi
fi
done
Personal tools
irssi scripts
eggdrop scripts