Uma maneira "melhor", que é "melhor" na medida em que executa rm
menos frequentemente, seria usar xargs
:
{
for pm in "${pri[@]}"; do
printf '/primary/abc_monthly_%s_log.data\n' "$pm"
done
for sm in "${snd[@]}"; do
printf '/secondary/abc_monthly_%s_log.data\n' "$sm"
done
} | xargs rm
Isso usaria os loops apenas como um meio para gerar nomes de caminho. Esses nomes de caminho são então passados para xargs rm
, o que executaria rm
no maior número possível de uma só vez. Com os arrays de exemplo que você forneceu, provavelmente executaria apenas rm
uma vez .
A maneira como escrevi acima supõe que nenhum dos componentes do caminho contém novas linhas literais ou espaços em branco (o que eles não fazem neste exemplo).