我编写了一个shell脚本来判断有多少目录,但是当我使用regex获取drwxr--r--或-d filename时,我得到了不同的输出,这就是为什么?
echo -n "the amount of dir:"
count=0
for i in $(ls -1 $1)
do
if [ -d $i ]
then
((count++))
fi
done
echo "$count"
echo -n "the amount of dir:"
ls -l $1|awk 'BEGIN{count=0;}{if(index($0,"d")==1){count++;}}END{print count;}'以及产出:
the amount of dir:18
the amount of dir:19当局的职权范围如下:
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
-rw-r--r--
-rw-r--r--
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
-rw-r--r--
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
drwxr-xr-x
-rw-r--r--
-rw-r--r--
-rw-r--r-- 发布于 2016-03-27 16:02:20
使用find而不是ls枚举目录
相反,使用。实用程序和命令替换。例如,您可以使用以下函数打印/tmp中的目录数,而不必递归到其子目录中:
count_directories () {
count=$(find -L "$1" -type d -maxdepth 1 | wc -l | tr -d ' ')
echo "Number of directories in $1: $count"
}样本输出
$ count_directories "/tmp"
Number of directories in /tmp: 13发布于 2016-03-27 15:42:26
你为什么不试试这个呢?
如果不希望在计数(./.example/)中包含隐藏目录:
count=$(find ${1}/* -maxdepth 0 -type d | wc -l)
如果希望在计数中包含隐藏目录:
count=$(find ${1} -mindepth 1 -maxdepth 1 -type d | wc -l)
https://stackoverflow.com/questions/36249109
复制相似问题