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
.