Contagem recursiva de arquivos que correspondem ao padrão no diretório em zsh

3

Como faço para contar recursivamente todos os arquivos de um determinado tipo em zsh ?

Existem alguns métodos para fazer isso (perguntas úteis do SuperUser, como este fornece ponteiros), mas poucos métodos zsh -específicos.

Isso segue meu pergunta anterior - várias soluções zsh -específicas foram dadas para mim, então eu vou registrá-las aqui no caso de alguém mais querer fazer isso.

    
por simont 09.04.2012 / 14:53

2 respostas

4

O recurso zsh -specific é zsh globbing; Eu não entendo completamente, mas esses trabalhos.

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

    Contará todos os arquivos terminados em .cpp e .h recursivamente no diretório atual e, em seguida, imprimirá o resultado como um único número.

  2. De esta resposta , também posso usar:

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

A parte específica zsh , portanto, é a expansão de **/*.{cpp,h} para corresponder aos arquivos que terminam em .cpp e .h . Ainda não encontrei nenhuma (simples) abrangente de zsh globbing que eu tenha sido capaz de entender (embora isso explica o uso de **/*.{a,b} razoavelmente bem).

    
por 09.04.2012 / 14:55
1

Para não contabilizar correspondências corretamente: a=( */.(cpp|h)(.N) ); print $#a

Para evitar o vazamento da variável: local -a a; a=( */.(cpp|h)(.N) ); print $#a

    
por 07.07.2015 / 12:50

Tags