#!/bin/sh
# http://www.berklix.com/~jhs/bin/.sh/nobracket
echo "$0 is Obsolete, replaced by ~/public_html/src/bsd/jhs/bin/public/mvexp/"
# Bourne shell script by Julian H. Stacey
# Obsolete, replaced by public_html/src/bsd/jhs/bin/public/mvexp/
# See Also ~/bin/.sh/noms

# How to call this:	
#	find -d ./*    -name \*\(\*                   -exec nobracket {} \;
#	brackets.c: \)
#	find -d ./* \( -name \*\(\* -o -name \*\)\* ) -exec nobracket {} \;
#		-d      = depth-first

# Move horrid (Microsoft ubiquitous graphical tool generated/ manipulated)
# file or directory names with bracket '(' ')' and other characters in,
# to (command line interpreter and Unix tools friendly) names with underscores.

# Debugging Example:
#	mkdir "aa(aa)aa" ; date -u +%Y-%m-%dT%H:%M:%SZ > "aa(aa)aa/bb(bb)bb"
#	ls -la . *
#		aa(aa)aa/
#		bb(bb)bb
#	find    ./* | sort
#		./aa(aa)aa
#		./aa(aa)aa/bb(bb)bb
#	find -d -s ./*
#		./aa(aa)aa/bb(bb)bb
#		./aa(aa)aa
#	find -d -s ./* -exec nobracket {} \;
#		# -d does sub {directories and files} before parent directories.
#		# find .
#		#	.
#		#	./aa_aa_aa
#		#	./aa_aa_aa/bb_bb_bb
#	find -d -s ./*
#		./aa(aa)aa/bb(bb)bb
#		./aa(aa)aa

# Warnings:
#	- Only takes 1 argument.
#	- Will likely fail on names with a `` or '' etc.
#	- Will not cope with a file that has bracket at beginning or end
#	  of name, only those with one or more brackets in the middle.
#	- Extended (but untested) 2022-11-22 to deal with many other punctuations
#	  that would upset a CLI.
# Man ascii:	
#	040 SP
#	041 !
#	042 ""
#	043 #
#	044 $
#	# 045 %		Not CLI disruptive.
#	046 &
#	047 ''
#	050 (
#	051 )
#	052 *
#	# 053 +		Not CLI disruptive.
#	# 054 ,		Not CLI disruptive.
#	# 055 -		Not CLI disruptive.
#	# 056 .		Not CLI disruptive. Plus filenames are often ./dir/file
#	# 057 /		Not CLI disruptive.
#	# 072 :		Not CLI disruptive.
#	073 ;
#	074 <
#	# 075 =		Not CLI disruptive.
#	076 >
#	077 ?
#	0133 [
#	0134 \
#	0135 ]
#	0136 ^
#	# 0137 _	Not CLI disruptive.
#	0140 ``
#	0173 {
#	0174 |
#	0175 }
#	0176 ~
#	0177 DEL

echo
echo -n "$0 DEBUG SOURCE "
echo $1
# Some names will fail, eg 
#	echo `basename \"Fred's photos\"`
echo -n "$0 DEBUG TARGET "
echo "`dirname \"$1\"`/`basename \"$1\" \
	| tr \"\\040\" _ \
	| tr \"\\041\" _ \
	| tr \"\\042\" _ \
	| tr \"\\043\" _ \
	| tr \"\\044\" _ \
	| tr \"\\046\" _ \
	| tr \"\\047\" _ \
	| tr \"\\050\" _ \
	| tr \"\\051\" _ \
	| tr \"\\052\" _ \
	| tr \"\\073\" _ \
	| tr \"\\074\" _ \
	| tr \"\\076\" _ \
	| tr \"\\077\" _ \
	| tr \"\\0133\" _ \
	| tr \"\\0134\" _ \
	| tr \"\\0135\" _ \
	| tr \"\\0136\" _ \
	| tr \"\\0140\" _ \
	| tr \"\\0173\" _ \
	| tr \"\\0174\" _ \
	| tr \"\\0175\" _ \
	| tr \"\\0176\" _ \
	| tr \"\\0177\" _ \
	`" 

if [ "$1" == "`dirname \"$1\"`/`basename \"$1\" \
	| tr \"\\040\" _ \
	| tr \"\\041\" _ \
	| tr \"\\042\" _ \
	| tr \"\\043\" _ \
	| tr \"\\044\" _ \
	| tr \"\\046\" _ \
	| tr \"\\047\" _ \
	| tr \"\\050\" _ \
	| tr \"\\051\" _ \
	| tr \"\\052\" _ \
	| tr \"\\073\" _ \
	| tr \"\\074\" _ \
	| tr \"\\076\" _ \
	| tr \"\\077\" _ \
	| tr \"\\0133\" _ \
	| tr \"\\0134\" _ \
	| tr \"\\0135\" _ \
	| tr \"\\0136\" _ \
	| tr \"\\0140\" _ \
	| tr \"\\0173\" _ \
	| tr \"\\0174\" _ \
	| tr \"\\0175\" _ \
	| tr \"\\0176\" _ \
	| tr \"\\0177\" _ \
	`" ] ; then #{
	# echo "Same, doing nothing for $1"
else	# }{
	# Check target does not pre-exist, dont want to overwrite a pre-existing file.
	if test -e "`dirname \"$1\"`/`basename \"$1\" \
		| tr \"\\040\" _ \
		| tr \"\\041\" _ \
		| tr \"\\042\" _ \
		| tr \"\\043\" _ \
		| tr \"\\044\" _ \
		| tr \"\\046\" _ \
		| tr \"\\047\" _ \
		| tr \"\\050\" _ \
		| tr \"\\051\" _ \
		| tr \"\\052\" _ \
		| tr \"\\073\" _ \
		| tr \"\\074\" _ \
		| tr \"\\076\" _ \
		| tr \"\\077\" _ \
		| tr \"\\0133\" _ \
		| tr \"\\0134\" _ \
		| tr \"\\0135\" _ \
		| tr \"\\0136\" _ \
		| tr \"\\0140\" _ \
		| tr \"\\0173\" _ \
		| tr \"\\0174\" _ \
		| tr \"\\0175\" _ \
		| tr \"\\0176\" _ \
		| tr \"\\0177\" _`" ; then # {
	echo "$0 not moving $1 as target pre-exists" 
	else	# }{
	mv "$1" "`dirname \"$1\"`/`basename \"$1\" \
		| tr \"\\040\" _ \
		| tr \"\\041\" _ \
		| tr \"\\042\" _ \
		| tr \"\\043\" _ \
		| tr \"\\044\" _ \
		| tr \"\\046\" _ \
		| tr \"\\047\" _ \
		| tr \"\\050\" _ \
		| tr \"\\051\" _ \
		| tr \"\\052\" _ \
		| tr \"\\073\" _ \
		| tr \"\\074\" _ \
		| tr \"\\076\" _ \
		| tr \"\\077\" _ \
		| tr \"\\0133\" _ \
		| tr \"\\0134\" _ \
		| tr \"\\0135\" _ \
		| tr \"\\0136\" _ \
		| tr \"\\0140\" _ \
		| tr \"\\0173\" _ \
		| tr \"\\0174\" _ \
		| tr \"\\0175\" _ \
		| tr \"\\0176\" _`"
	fi	# }
fi	# }
