首页 > 解决方案 > 计算具有唯一名称的嵌套目录的数量

问题描述

我有一堆嵌套目录。我有兴趣计算的目录都有不同的名称,但好在它们都有一个具有特定名称的嵌套目录。因此,可以通过计算具有该唯一名称的所有嵌套目录来计算我感兴趣的目录数量:

前任:

home/dir1/dir2/dir_of_interest_1/fruits
home/directory_of_interest_2/fruits
home/fruits
home/dir3/dir4/dir5/directory_of_interest3/fruits
etc...

我有兴趣找到“dir_of_interest_X”的数量,因此,我想计算“home”中名称为“fruits”的目录数量。我将如何在 bash 中执行此操作?

标签: bash

解决方案


几种方法。

使用bash的递归通配符:

shopt -s globstar
fruits=( home/**/fruits/ )
numfruits=${#fruits[@]}

如果需要,这还会为您提供所有水果目录的数组。

使用findandwc来获取数字:

numfruits=$(find home/ -type d -name fruits -printf "x\n" | wc -l)

如果您不想 count home/fruits,则可以从总数中减去 1:

numfruits=$((numfruits - 1))

推荐阅读