使用 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
我正在尝试编写一个 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