Подсчет файлов и каталогов с помощью сценария оболочки

я изучаю сценарии bash и написал сценарий для подсчета файлов и каталогов в каталоге, который предоставляется в качестве аргумента. У меня это работает одним способом, который кажется мне странным, и мне интересно, есть ли более простой способ сделать это.

Я закомментировал код, который будет работать, но оставил его в качестве сравнения. Я пытаюсь получитьforпетля работает, вместо этого используетсяif операторы внутри него, чтобы определить, является ли элемент в данном месте файлом или каталогом.

редактировать: Я только что узнал, что закомментированный код подсчитывает все файлы и каталоги в подкаталогах данного местоположения! Есть ли способ предотвратить это и просто посчитать файлы и каталоги данного места?

#!/bin/bash

LOCATION=$1
FILECOUNT=0
DIRCOUNT=0

if [ "$#" -lt "1" ]
then
    echo "Usage: ./test2.sh "
    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

По какой-то причине выводfor-loop, независимо от того, куда я указываю местоположение, всегда возвращает:

File count: 0 , Directory count: 1

Ответы на вопрос(5)

Ваш ответ на вопрос