计算忽略父目录的子目录数
Count number of subdirectories ignoring parent directories
我想计算深度 2 的子目录数量,但在 bash 脚本中忽略深度 1 的父目录。
示例:
root_dir ---|--ignore_dir ---|--count_dir
| |--count_dir ---|--ignore_dir
| |--ignore_dir
|--ignore_dir ---|--count_dir
|--count_dir
|--count_dir
有什么想法吗?
您可以尝试这样的操作:
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
另一种方法是通配
ls /path/to/root_dir/*/*/ -d | wc -l
我发现这种类型的解决方案更容易记住,但它不像 find
-one
那样容易 'scalable'(例如,许多深度级别)
我想计算深度 2 的子目录数量,但在 bash 脚本中忽略深度 1 的父目录。
示例:
root_dir ---|--ignore_dir ---|--count_dir
| |--count_dir ---|--ignore_dir
| |--ignore_dir
|--ignore_dir ---|--count_dir
|--count_dir
|--count_dir
有什么想法吗?
您可以尝试这样的操作:
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
另一种方法是通配
ls /path/to/root_dir/*/*/ -d | wc -l
我发现这种类型的解决方案更容易记住,但它不像 find
-one