#!/bin/sh
# recursive chmod with arguments for files and directories
# save internal field separator
IFS_save=$IFS
# set internal field separator, thx to matthias
IFS=$'
'
# read arguments
chmodf=$1 # chmod for files
chmodd=$2 # chmod for directories
dir=$3    # start directory
# test for arguments $1 and $2
if [ -z "$chmodf" -o -z "$chmodd" ]
then
 echo "Usage: `basename $0` fff ddd [pfad]"
 echo " fff  ... chmod argument for files (644)"
 echo " ddd  ... chmod argument for direcories (755)"
 echo " pfad ... nothing for current directory"
 exit
fi
# if no start directory, use current directory
if [ -z "$dir" ]
then
 dir="."
fi
# "\$x='$x'"
# find backwards all files and directories
for file in `find "$dir" -name "*"`
 do
# debug print
# echo "$file"
if [ -d $file ] # directory
 then
# chmod
  chmod $chmodd $file
  elif [ -e $file ] # file
  then
# chmod
  chmod $chmodf $file
  else
  echo "error: $file"
fi
  done

#set back internal field separator
IFS=$IFS_sav


