com find
:
find . ! -name . -prune \
\( -name '*.ext1' -o -name '*.ext2' \) \
! \( -name 'name1.*' -o -name 'name2.*' \)
Usar -prune
é o equivalente padrão do -maxdepth
do GNU ou de -depth <n>
do BSD (embora esses BSDs também suportem -mindepth
/ -maxdepth
à GNU). Aqui, ele diz find
para não descer em nenhum diretório, exceto .
.
o ! -name .
também exclui .
da seleção, então ! -name . -prune
é o equivalente padrão do -mindepth 1 -maxdepth 1
do GNU ou de alguns% BSDs -depth 1
. Para o -mindepth 1
do GNU (alguns BSDs ' -depth -2
), você escreveria find . \( -name . -o -prune \)
.
Com zsh
, você também pode:
setopt extendedglob
printf '%s\n' *.(ext1|ext2)~(name1|name2).*(D)
~
sendo o operador não-e e (D)
para incluir arquivos-ponto.