计算忽略父目录的子目录数

时间:2018-03-02 14:51:29

标签: linux bash directory directory-structure subdirectory

我想计算深度为2的子目录数,但忽略bash脚本中深度为1的父目录。

示例:

root_dir ---|--ignore_dir ---|--count_dir
            |                |--count_dir ---|--ignore_dir
            |                                |--ignore_dir
            |--ignore_dir ---|--count_dir
                             |--count_dir
                             |--count_dir

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

您可以尝试这样的事情:

find /path/to/root_dir -maxdepth 2 -mindepth 2 -type d | wc -l

这里我们明确地将find的深度限制为2(不多也不少)并列出所有目录。 wc -l计算find命令输出的行数。

注意:

如果您的文件夹名称包含换行符,特定字符或异常编码,则使用wc -l会产生错误的结果。

this question获取灵感,您可以为找到的每个文件夹打印一个字符,并计算生成的字符数。

您可以使用以下代码段:

find /path/to/root_dir -maxdepth 2 -mindepth 2 -type d -printf '.' | wc -c     

答案 1 :(得分:0)

另一种方法是通过globbing

ls /path/to/root_dir/*/*/ -d | wc -l

我发现这种类型的解决方案更容易记住,但它不像find - 一个

那样容易“扩展”(例如达到许多deapth级别)