如何在Bash中计算每个文件的子目录数和字节数

问题描述

我可以获取有关修复代码以计数每个子目录(“ PATH”本身除外)的帮助吗?

num_directories=$( find $dir -type d | wc -l)

还需要帮助修复每个文件的总字节数

total_size=$( find $dir -type f -ls | awk '{total+=5}END{print total}';)

我知道您将无法访问相同的文件,但是我认为计算出的代码是相同的。

解决方法

要递归计算目录下的所有子目录(不包括目录本身):

find "$d" -mindepth 1 -type d | wc -l

示例:

> mkdir -p 1; mkdir -p 2
> find . -type d | wc -l
3
> find . -mindepth 1 -type d | wc -l
2

也出于任何原因都不解析ls命令的文本输出,请查看为什么herehere

要(递归)打印当前目录中所有文件的字节数:

find -type f -exec wc -c {} +

要单独获取总数(仅撤消最后一行的第一字段)

find -type f -exec wc -c {} + | sed -n '$ s/ .*$//p'

或相同

find -type f -exec wc -c {} + | awk 'END{ print $1}'