【发布时间】:2017-01-09 18:57:03
【问题描述】:
我的初始代码是:
function recurse {
for i in "$1"/*;do
echo "$i"
if [ -d "$i" ];then
#echo $i
count $i
recurse "$i"
fi
done
}
但后来我意识到这不会遍历隐藏目录。我想做的是制作一个脚本来计算给定目录(包括隐藏)中的所有文件和目录。我这样做的功能是:
function count {
varname=($1/*)
for varname2 in ${varname[@]} # For each element
do
if [ -d $varname2 ] # Checks if directory
then
Directories=$(expr $Directories + 1)
elif [ -f $varname2 ] # Checks if file
then
Files=$(expr $Files + 1)
fi
done
for a in $(ls -FA $1 | egrep '^[.].*[/]$') # Checks for hidden dirs
do
HiddenDirectories=$(expr $HiddenDirectories + 1)
done
for a in $(ls -FA $1 | egrep '^[.].*[^/]$') # Checks for hidden files
do
HiddenFiles=$(expr $HiddenFiles + 1)
done
}
谢谢
【问题讨论】:
-
出于好奇,使用 find 命令有什么问题?
-
您使用的是哪个版本的
bash?如果bash4,使用globstar选项会变得更容易:例如,for f in **/*; do递归地命中当前目录下的每个文件。
标签: bash shell loops scripting