bash脚本计算文件夹中存在多少个常规文件和多少个目录

时间:2017-02-17 02:43:30

标签: linux bash

语法:

./count.sh <folder> <depth>

脚本将从<folder>开始搜索(递归)到<depth>级别的深度,并计算该文件夹中存在多少个常规文件和多少个目录。示例:如果<folder>/<depth>为2,则程序将遍历文件夹/ a / b / *,但不会解析/a/b的子文件夹(例如{{ 1}}将不被解析。)

/a/b/c/

这样可以吗?

1 个答案:

答案 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选项使用零字节作为记录分隔符。

相关问题