我想计算深度为2的子目录数,但忽略bash脚本中深度为1的父目录。
示例:
root_dir ---|--ignore_dir ---|--count_dir
| |--count_dir ---|--ignore_dir
| |--ignore_dir
|--ignore_dir ---|--count_dir
|--count_dir
|--count_dir
有什么想法吗?
答案 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
- 一个