Com zsh
e qualificadores glob ( e
string ):
print -rl -- *(/e_'[[ ! -f $REPLY/README ]]'_)
ou
print -rl -- *(/^e_'[[ -f $REPLY/README ]]'_)
adicione D
para incluir diretórios ocultos:
print -rl -- *(D/e_'[[ ! -f $REPLY/README ]]'_)
/
seleciona apenas diretórios e, e_'[[ ! -f $REPLY/README ]]'_
além disso, seleciona apenas os nomes de diretório para os quais o código do shell entre as aspas retorna true
, ou seja, para cada nome de diretório ( $REPLY
) ao qual o glob se *(/)
expande, ele executa [[ ! -f $REPLY/README ]]
e mantém o nome do diretório, se o resultado for true
.
O segundo formulário ^e_'.....'_
usa o mesmo qualificador global, negado (mas desta vez a expressão condicional não é negada:) [[ -f $REPLY/README ]]
.
O exemplo acima retornará apenas nomes de diretório no diretório atual.
Se você deseja pesquisar recursivamente (novamente, para incluir diretórios ocultos, adicione o D
qualificador):
print -rl ./**/*(/e_'[[ ! -f $REPLY/README ]]'_)