Você pode combinar testes em find
com -o
em pé de "ou"; o operador implícito entre os testes é "e". Por exemplo:
subs="$(find -maxdepth 2 -type d \( \
-name "*-nom1" -o -name "*-nom2" -o -name "*-nom3" \
\) )"
for d in $subs ; do
... do something with "$d" ...
done
Os parantheses em torno de '-name' -nom1 "-o -name" -nom2 "-o" * -nom3 "precisam ser citados porque são palavras reservadas para o shell.
Agora, como observa don_crissti em um comentário, a recomendação geral é evitar a captura da saída de find
, por dois motivos; primeiro, porque os nomes dos arquivos podem conter espaços e novas linhas, além de caracteres especiais e filho; e segundo, porque find
, por sua própria natureza, faz um loop sobre os resultados. O melhor idioma é usar o loop implícito em find
; consulte Por que o loop é sobre a prática ruim de saída em> e a discussão associada:
find -maxdepth 2 -type d \( \
-name "*-nom1" -o -name "*-nom2" -o -name "*-nom3" \
\) -exec \
... do something with '{}' ...
\;