#!/bin/bash function countFiles { IFS=" " #statements nf=$(ls -l "$1" | grep "^-.*" | wc -l) # count all files nd=$(ls -l "$1" | grep "^d.*" | wc -l) # count lines of all dirs in thing fles=$(expr "$fles" + "$nf") dirs=$(expr "$dirs" + "$nd") for i in $(ls -l "$1" | grep "^d.*" | grep -o "[^ ]\+$") # for every directory in current dir do # echo "2: $2" countFiles "$2/$i" "$2/$i" # count that directory done } function countHidden { IFS=" " #statements nhf=$(ls -la "$1" | grep "^-.*" | wc -l) # count all files nhd=$(ls -la "$1" | grep "^d.*[^\.]$" | wc -l) # count lines of all dirs in thing EXCEPT . and .. truefiles=$(expr "$truefiles" + "$nhf") truedirs=$(expr "$truedirs" + "$nhd") for i in $(ls -la "$1" | grep "^d.*[^\.]$" | grep -o "[^ ]\+$") # for every directory in current dir do # echo "2: $2" countHidden "$2/$i" "$2/$i" # count that directory done } function main { #statements fles=0 dirs=0 truefiles=0 truedirs=0 countFiles $1 $1 countHidden $1 $1 diffhidden=$(expr "$truefiles" - "$fles") diffhiddir=$(expr "$truedirs" - "$dirs") echo "Files found: $fles (plus $diffhidden hidden)" echo "Directories found: $dirs (plus $diffhiddir hidden)" echo "Total files and directories: $(expr "$truefiles" + "$truedirs")" } main $1