Skip to content

Script to chmod file and folder with different access

#!/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