语法:
./count.sh <folder> <depth>
脚本将从<folder>
开始搜索(递归)到<depth>
级别的深度,并计算该文件夹中存在多少个常规文件和多少个目录。示例:如果<folder>
为/
且<depth>
为2,则程序将遍历文件夹/ a / b / *,但不会解析/a/b
的子文件夹(例如{{ 1}}将不被解析。)
/a/b/c/
这样可以吗?
答案 0 :(得分:2)
您可能不需要脚本。
计算文件:
find <folder> -mindepth 1 -maxdepth <depth> -type f | wc -l
计算目录:
find <folder> -mindepth 1 -maxdepth <depth> -type d | wc -l
请注意这有两个步骤可以解决您的问题:查找您感兴趣的所有文件/目录,并将结果汇总到仅计算行数的wc -l
。
请注意,此方法大部分时间都可以使用,但如果文件或目录中有换行符(这不是您经常看到的,但在技术上可行),则会产生错误的结果。如果这是一个问题,你可以使用类似的东西:
declare -i i=0
while IFS= read -d '' file
do
i+=1
done < <(find <folder> -mindepth 1 -maxdepth <depth> -type f -print0)
echo "$i"
这使用零字节作为分隔符(不能在文件名中出现)使用-print0
选项,-d ''
read
选项使用零字节作为记录分隔符。