Policz pliki i katalogi za pomocą skryptu powłoki

Uczę się skryptów bash i napisałem skrypt do zliczania plików i katalogów w katalogu, który jest dostarczany jako argument. Mam to działające w jedną stronę, co wydaje mi się dziwne i zastanawiam się, czy istnieje prostszy sposób na to.

Skomentowałem kod, który będzie działał, ale pozostawiłem go jako porównanie. Próbuję zdobyćfor-loop działa, zamiast tego używaćif instrukcje wewnątrz niego, aby wykryć, czy element w danej lokalizacji jest plikiem lub katalogiem.

Edytować: Właśnie dowiedziałem się, że skomentowany kod zlicza również wszystkie pliki i katalogi w podkatalogach danej lokalizacji! Czy jest jakiś sposób, aby temu zapobiec i po prostu policzyć pliki i katalogi danej lokalizacji?

#!/bin/bash

LOCATION=$1
FILECOUNT=0
DIRCOUNT=0

if [ "$#" -lt "1" ]
then
    echo "Usage: ./test2.sh <directory>"
    exit 0
fi

#DIRS=$(find $LOCATION -type d)
#FILES=$(find $LOCATION -type f)

#for d in $DIRS
#do
#   DIRCOUNT=$[$DIRCOUNT+1]
#done

#for f in $FILES
#do
#   FILECOUNT=$[$FILECOUNT+1]
#done

for item in $LOCATION
do
if [ -f "$item" ]
    then
         FILECOUNT=$[$FILECOUNT+1]
    elif [ -d "$item" ]
        then
         DIRCOUNT=$[$DIRCOUNT+1]
fi
done

echo "File count: " $FILECOUNT
echo "Directory count: " $DIRCOUNT

Z jakiegoś powodu wyjściefor-loop, bez względu na to, gdzie wskazuję lokalizację, zawsze zwraca:

File count: 0 , Directory count: 1

questionAnswers(5)

yourAnswerToTheQuestion