Que tal realizar tudo em um único comando?
Você pode capturar a verificação, globbing e remoção de existência de arquivo com uma chamada find . No caso da versão do GNU de find , nós teríamos isto:
for f in "${array[@]}"; do
find "$f" -type f -delete
done
Se você não tem o GNU find use esta invocação:
find "$f" -type f -exec rm -f {} +
(Se, em vez de limpar arquivos de toda a hierarquia de diretórios, você só quiser limpar os arquivos que são filhos imediatos, adicione -maxdepth 1 antes de -type f .)
Mas espere, tem mais ....
Como John1024 observa sabiamente você pode abrir o loop passando a matriz como o primeiro parâmetro para find :
find "${array[@]}" -type f -delete
Isso porque: 1) find aceitará que vários diretórios sejam pesquisados e processados em uma execução 2) o shell dividirá o array de tal forma que cada elemento ( diretório) se torna um parâmetro posicional individual para find .