递归计算 zsh 目录中匹配模式的文件数

sim*_*ont 4 zsh

如何递归计算某种类型的所有文件zsh

有很多方法可以做到这一点(有用的超级用户问题,例如这个给出了指导),但很少有zsh特定的方法。

这是我之前的问题-zsh已经向我提供了几个特定的​​解决方案,因此我将它们记录在这里,以防其他人想要这样做。

sim*_*ont 5

特定功能zsh是 zsh globbing;我不完全理解,但这些有效。

  1. $ a=( **/*.(cpp|h)(.) ); print $#a

    将计算以当前目录结尾.cpp.h从当前目录递归开始的所有文件,然后将结果打印为单个数字。

  2. 这个答案中,我还可以使用:

    $ ls **/*.{cpp,h} | wc -l

那么具体zsh的部分就是扩展 来**/*.{cpp,h}匹配以.cpp和结尾的文件.h。我还没有找到任何我能够理解的(简单的)全面的 zsh globbing(尽管**/*.{a,b}很好地解释了的用法)。

  • 1.`( */.(cpp|h)(.) )` 将 a 设置为与 glob 匹配的所有文件的数组,`$#a` 给出其大小 (2认同)