O argumento do comando do exemplo
echo **/*(AIE)
usa o sntax glob de zsh
;
Não funciona para bash
, por exemplo.
Os caracteres no ()
são qualificadores glob; Múltiplos qualificadores são combinados pelo lógico AND
- ou seja, todos eles devem ser aplicados.
Portanto, o comando acima mostra nomes de arquivos legíveis, graváveis e executáveis para o grupo. Eles têm as permissões definidas por chmod g+rwx
.
Uma maneira mais portável de pesquisar arquivos por permissões é usar o -perm
test de find
,
por exemplo:
find -perm -g=rwx
Além de trabalhar independentemente do shell, a sintaxe também tende a ser mais legível.
De man zshall
:
Glob Qualifiers
Patterns used for filename generation may end in a list of qualifiers
enclosed in parentheses. The qualifiers specify which filenames that other‐
wise match the given pattern will be inserted in the argument list.
If the option BARE_GLOB_QUAL is set, then a trailing set of parentheses con‐
taining no '|' or '(' characters (or '~' if it is special) is taken as a set
of glob qualifiers. A glob subexpression that would normally be taken as
glob qualifiers, for example '(^x)', can be forced to be treated as part of
the glob pattern by doubling the parentheses, in this case producing
'((^x))'.
If the option EXTENDED_GLOB is set, a different syntax for glob qualifiers
is available, namely '(#qx)' where x is any of the same glob qualifiers used
in the other format. The qualifiers must still appear at the end of the
pattern. However, with this syntax multiple glob qualifiers may be chained
together. They are treated as a logical AND of the individual sets of
flags. [...]
[ ... ]
A group-readable files (0040)
I group-writable files (0020)
E group-executable files (0010)
R world-readable files (0004)
W world-writable files (0002)
X world-executable files (0001)
Veja man zshall | less '+/Glob Qualifiers'
ou pinfo zsh