计算查找结果中不同文件夹的数量

Count number of distinct folders in find result

我是 运行 一个在任意数量的子文件夹中生成任意数量文件的进程。我对不同子文件夹的数量感兴趣,目前正在尝试使用 bash 解决此问题并查找(我不想使用脚本语言)。

到目前为止我有:

find models/quarter/ -name settings.json | wc -l

然而,这显然没有考虑 find 结果的结构,只计算了所有文件 returned.

查找示例 return:

models/quarter/1234/1607701623/settings.json
models/quarter/1234/1607701523/settings.json
models/quarter/3456/1607701623/settings.json
models/quarter/3456/1607702623/settings.json
models/quarter/7890/1607703223/settings.json

我对顶级文件夹 models/quarter 中不同文件夹的数量感兴趣,因此上面示例的适当结果是 3(123434567890).要求要计算的文件夹包含一个子文件夹(您可能已经认识到这是一个 Unix 时间戳)并且该子文件夹包含文件 settings.json.

我的直觉告诉我这应该是可能的,例如用awk,但我肯定不是bash亲。非常感谢任何帮助,谢谢。

find models/quarter/ -name settings.json | awk -F\/ '{ if (strftime("%s",) == ) { fil[]="" } } END { print length(fil) }'

使用 awk。将 find 的输出传递给 awk 并将 / 设置为字段分隔符。检查第 4 个字段是否为时间戳,如果是,则创建一个以第 3 个字段为索引的数组。最后打印数组fil的长度。