# The script accepts a directory and produces output that tells how many regular files, directories, and symbolic links are in the directory (exclude subdirectories).
# The words in the output are singular or plural depending on the count (e.g. 1 link, 2 links). Make sure the directory exists.
# Use the current directory if none was provided.
# Print out a "Usage" message if the user gave more than one argument.
# Syntax: countfiles.sh directory
#!/bin/bash
#usage
directory=$1
[ $# -eq 0 ] && directory=$PWD
[ $# -gt 1 ] && { echo "Usage: countfiles.sh requires one directory as a parameter."; exit 1; }
dirs=0;files=0;links=0
# take directory parameter and check if it exists
# $0 is the directory
[ -d $directory ] || { echo "Directory specified either does not exist or is of a different file type."; exit 1; }
# loop through files in directory
for file in $directory/*;
do
[ -d "$file" ] && dirs=`expr $dirs + 1`
[ -f "$file" ] && files=`expr $files + 1`
[ -h "$file" ] && links=`expr $links + 1`
done
echo "Directory $directory contains:";
if [ $dirs -eq 1 ]; then
echo "$dirs directory"
else
echo "$dirs directories"
fi
if [ $files -eq 1 ]; then
echo "$files file"
else
echo "$files files"
fi
if [ $links -eq 1 ]; then
echo "$links symbolic link"
else
echo "$links symbolic links"
fi
exit 0