I have seen a lot of answers about this subject but I don't want to do this using
find
. I have written this but something not working:
function CountEx()
{
count=0
for file in `ls $1`
do
echo "file is $file"
if [ -x $file ]
then
count=`expr $count + 1`
fi
done
echo "The number of executable files in this dir is: $count"
}
while getopts x:d:c:h opt
do
case $opt in
x)CountEx $OPTARG;;
d)CountDir $OPTARG;;
c)Comp $OPTARG;;
h)help;;
*)echo "Please Use The -h Option to see help"
break;;
esac
done
I am using this script like the following:
yaser.sh -x './..../...../.....'
The shell runs it and then it outputs:
The number of executable files in this dir is: 0
when there is many executable files in this directory.
To count the number of executable (like the title says)
To count folders, just change the
-x
test with-d
If your goal is to count directories, there are so many options.
The
find
way, which you said you don't want:The
for
way, similar to your example:The
set
way, which skips the loop entirely.