Linux 计数忽略父目录的子目录数
我想计算深度2中的子目录数,但忽略bash脚本中深度1的父目录 示例:Linux 计数忽略父目录的子目录数,linux,bash,directory,directory-structure,subdirectory,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
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
命令输出的行数
注意:
root_dir ---|--ignore_dir ---|--count_dir
| |--count_dir ---|--ignore_dir
| |--ignore_dir
|--ignore_dir ---|--count_dir
|--count_dir
|--count_dir
如果文件夹名称包含换行符、特定字符或异常编码,则使用wc-l
将产生不正确的结果
从中汲取灵感,您可以为找到的每个文件夹打印一个字符,并计算得到的字符数
您可以使用以下代码段:
find /path/to/root_dir -maxdepth 2 -mindepth 2 -type d -printf '.' | wc -c
另一种方法是通过全球化
ls /path/to/root_dir/*/*/ -d | wc -l
我发现这种类型的解决方案更容易记住,但它不像
find
-one那么容易“可伸缩”(例如,可扩展到多个死亡级别)。虽然这回答了这个问题,但当名称中有换行符时,应该小心。()@kvantour我编辑了我的答案,以解决“输出中的特殊字符”的边缘情况。虽然这回答了问题,但当名称中有换行符时,应该小心。()