使用 shell 脚本递归计算目录和文件

Recursively count directories and files with a shell script

我正在尝试编写一个 shell 脚本,它将递归地计算目录中的所有文件和子目录以及所有隐藏的文件和子目录。我的脚本可以对它们进行计数,但是它无法检测子目录中的隐藏文件和目录。我怎样才能改变它以便它能够做到这一点?我也不能使用 find、du 或 ls -R

#!/bin/bash
cd 
dir=0
hiddendir=0
hiddenfiles=0
x=0
items=( $(ls -A) )
amount=( $(ls -1A | wc -l) )

counter() {
    if [ -d "$i" ]; then
        let dir+=1
        if [[ "$i" == .* ]]; then
            let hiddendir+=1
            let dir-=1
        fi
        search "$i"
    elif [ -f "$i" ]; then
        let files+=1
        if [[ "$i" == .* ]]; then
            let files-=1
            let hiddenfiles+=1
        fi
    fi
}
search() {
    for i in /*; do
        counter "$i"
    done
}
while [ $x -lt $amount ]; do
    i=${items[$x]}
    counter "$i"
    let x+=1
done
#!/bin/bash -e

shopt -s globstar dotglob # now ** lists all entries recursively

cd ""

dir=0 files=0 hiddendir=0 hiddenfiles=0

counter() {
   if [ -f "" ]; then local typ=files
   elif [ -d "" ]; then local typ=dir
   else continue
   fi
   [[ "$(basename "")" == .* ]] && local hid=hidden || local hid=""
   ((++$hid$typ))
}

for i in **; do
   counter "$i"
done

echo $dir $files $hiddendir $hiddenfiles

考虑使用这个:

find . | wc -l